возникли проблемы при доступе к данным Ajax Post на PHP - PullRequest
0 голосов
/ 05 июля 2018

У меня возникли проблемы с доступом к данным Ajax Post на стороне сервера. У меня

var data = {
            ox:'A', 
            oy:'B', 
            dx:'C',
            dy:'D',
            method:null
        };

У меня есть хамлер событий jQuery, как

        $("#route").on("click", function(){
            var request = $.ajax({
                type: "POST",
                url: "assets/app.php",
                data: data,
                cache: false,
                dataType: "JSON",
                beforeSend: function() {
                    console.log(data);
                }
            });

            request.done(function( data ) {
            console.log(data);
            });
            request.fail(function( jqXHR, textStatus ) {
              console.log( "Request failed: " + textStatus );
            }); 
        });

Я могу правильно отправить данные, поскольку они выходят из системы на beforeSend

{ox: A, oy: B, dx: C, dy: D, метод: null}

На стороне PHP у меня есть

$method = $_POST['method'];
$ox = $_POST['ox'];
$oy = $_POST['oy'];
$dx = $_POST['dx'];
$dy = $_POST['dy'];

теперь доступ только к одной из $_POST[] данных работает как echo $ox;, но когда я пытаюсь получить доступ ко всем $_POST[] данным, таким как

 echo $ox;
 echo $dy;

 $startPoint = array($ox, $oy);
 $endPoint = array($dx, $dy); 

Я получаю Request failed: parsererror ошибку при .fail()

1 Ответ

0 голосов
/ 05 июля 2018

Из документов :

dataType (по умолчанию: Intelligent Guess (xml, json, script или html)) Тип: Строка Тип данных, которые вы ожидаете от сервера . Если ничего не указано, jQuery попытается вывести его на основе MIME-типа ответа (XML-MIME-тип даст XML, в 1.4 JSON выдаст объект JavaScript, в 1.4 скрипт выполнит скрипт, а все остальное будет возвращается как строка). Доступные типы (и результат, переданный в качестве первого аргумента в ваш обратный вызов успеха):

Итак, ваш ответ не является допустимым JSON.

Что вы можете сделать, это создать массив, как вы делаете:

 $startPoint = array($ox, $oy);
 $endPoint = array($dx, $dy);

Затем закодируйте в json и echo it

echo json_encode(['startPoint' => $startPoint, 'endPoint' => $endPoint]);

На интерфейсе (javascript) вы получите и JSON, как

{
    'startPoint' : ['ox','oy'],
    'endPoint' : ['dx','dy'],
}

значения ox, oy, dx и dy, конечно, будут значениями, отправленными ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...