Как проверить получение моего запроса строки Ajax сервером? - PullRequest
0 голосов
/ 17 февраля 2019

Я использую Javascript для отправки данных формы php через Ajax для проверки и отправки по почте.Строка запроса, которую я назвал formString, выглядит следующим образом: «name = John Smith». У меня есть одно поле ввода только для целей тестирования.Связь Ajax между моей клиентской страницей и сервером в порядке, и я успешно проверил ее с помощью сценариев, показанных ниже.Проблема в том, что я не могу перехватить запрос formString на стороне сервера.Ниже я приведу метод, который я использовал для сбора данных безуспешно.Echo json_encode ($ name) ничего не возвращает html-серверу.Любая помощь в этом вопросе будет принята с благодарностью.Спасибо всем заранее.

Я попытался выполнить запрос с несколькими сериализованными значениями полей ввода и не работал.Я попытался отправить строку запроса простой строкой, включающей только имя «Джон», но она тоже не сработала.

processForm()
var name = document.getElementById("fullName").value;
var formString = name;

var name = document.getElementById("fullName").value;
var formString = name;

var xhr = new XMLHttpRequest();
    xhr.open('POST', formfile.php, true);
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.onreadystatechange = function () {
      if(xhr.readyState == 4 && xhr.status == 200) {
        var result = xhr.responseText;

      xhr.send(formString);

button.addEventListener("click", function(event) {
    event.preventDefault();
    processForm();

php snipet:

header('Content-Type: application/json');

function is_ajax_request(){
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';
}
if(is_ajax_request()) {

$Ajax_results = array (
'Testing Text' => 'Hello World',
    'Your Ajax submittal succeeded.
);  
 echo json_encode($Ajax_results);

 } else {

$None_Ajax_results = array (
'errors' => 'None Ajax - short'
'Your Ajax submittal failed. Errors.'
);
echo "Form is Non Ajax Submitted";
echo json_encode($None_Ajax_error);
exit;
}

определить и установить переменные:

global $name;

$errors = null;

if (isset($_POST['name'])) { $name = $_POST['name']; }
else { $name = ''; }

echo '$name';
echo json_encode($name);

1 Ответ

0 голосов
/ 17 февраля 2019

Если я правильно читаю ваш вопрос и предполагаю, что у вас есть правильное сердцебиение между Ajax и сервером в тот момент, когда вы это делаете, быстро взгляните на ваш код, если вы неправильно форматируете «formString».Чтобы форма FormString правильно отображалась в $ _POST ['name'], она должна быть:

var formString = "name="+name

Это связано с тем, что отправляемая строка сообщения (в вашем случае "formString") должна иметьформат:

field1=val1&field2=val2& ... fieldN=valN

, где указано имя каждого поля, за которым следует '=' и значение поля.Несколько полей разделены символом «&».Который в PHP, который будет переводить на

$_POST = {field1=>val1, field2=>val2, ... fieldN=>valnN}

на стороне сервера.Это, конечно, не буквальный код выше, а пример стандартного API.Присмотритесь, как отформатировать строки Post для HTML GET / POST

...