$ _POST не заполняется после выборки - PullRequest
0 голосов
/ 12 октября 2019

Я часами гнался за этим и надеюсь, что у кого-то есть простой ответ. Я использую fetch для выполнения процедуры. Сервер, похоже, не заполняет значения записей. Я упростил код, чтобы попытаться изолировать его. Простая HTML-форма делает JS-запрос, который выдает выборку, включая запись имени пользователя и pwd. Значения передаются на сервер, но на целевой php-странице массив $ _POST пуст. Кодекс следует. Есть идеи?

веб-страница, инициирующая запрос

***
<html>
<head>
<script src="/js/2.js"></script>
</head>
<body>
    <h1>Who are you?</h1>
    <form action="" method=POST>
        <label>User Name</label>
        <input id=username type=text autocomplete='username' name=username>
        <label>Password</label>
        <input id=pwd type=password autocomplete='current-password' name=pwd>
        <input type=submit value="log in" onclick="login();">
    </form>
</body>
</html>***

javascript, извлекающий ответ со страницы php

***
async function login(){
    let content = "username=buddy&pwd=xxxxxxxxx";
    let response = await fetch("http://example.com/lib/2.php",{method: "POST", body: content });
    var text = await response.text();
    if(text == 1){
        window.open("http://example.com", "_self");
    }else{
        alert(text);
    }
}***

**php page where post does not populate**
***
<?php
    echo "user name is ".$_POST['username'];
?>***

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

ОБНОВЛЕНИЕ: Оказывается, с кодом ничего не случилось. Внедрение рабочих формданных было случайностью. При дальнейшем тестировании это также не удалось. Фактически, выполнение кода иногда работало, а иногда нет. Я отследил проблему до пользователя session_start. Мне нужно больше исследовать использование session_start, поэтому я не уверен, почему это вызывает проблему, но я подозреваю, что $ _POST ассоциируется с идентификатором сеанса и в некоторых случаях совпадают идентификаторы сеанса, и сообщение является видимым ив других случаях идентификаторы сессий отличаются и сообщение отсутствует.

0 голосов
/ 12 октября 2019

Ответ не указан здесь, но кто-то отправил мне ответ по электронной почте. Мне сказали использовать FormData, который действительно работал. Спасибо.

Я был обескуражен, когда увидел, что кто-то помечает мой вопрос отрицательным 1. Для тех, кто любит спешить осуждать людей, у меня есть рекомендация. Попробуй немного сочувствовать.

Я часами гнался за этой проблемой. Я использовал Ajax для выполнения этой функции много-много раз без проблем. Я реализовал эту функцию в Ajax, как я всегда делал, и она не работала. Я сравнил это с десятками других фрагментов кода, которые работают, и все же это не сработало.

Я подумал, что попробую извлечь, чтобы посмотреть, сработает ли это из коробки. Исходя из Ajax, я установил тело как строку URL и установил заголовок application / x-www-form-urlencoded. Я посмотрел на след запроса в fiddler, и все выглядело правильно, если сравнивать с успешно выполненными запросами, но ничего не вернулось.

Я исследовал выборку постов в поиске Google и прочитал несколько примеров. Я видел несколько примеров с использованием JSON.stringify, которые я имитировал безуспешно.

Итак, если кто-то хочет отметить меня за то, что я не пытался ... так и будет.

...