在PHP上访问Ajax Post数据时遇到问题

时间:2018-07-05 17:15:57

标签: php ajax

我在访问服务器端的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,method: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 :(得分:3)

来自docs

  

dataType(默认值:Intelligent Guess(xml,json,脚本或html))   类型:字符串   您要从服务器回溯的数据类型。如果未指定,则jQuery将尝试根据响应的MIME类型来推断它(XML MIME类型将产生XML,在1.4中,JSON将产生JavaScript对象,在1.4中,脚本将执行该脚本,而其他所有内容将是以字符串形式返回)。可用的类型(以及作为第一个参数传递给成功回调的结果):

因此,您的响应不是有效的JSON。

您可以做的是像创建一个数组一样创建一个数组:

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

然后将其编码为json并echo

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

在前端(javascript)上,您将获得与JSON类似的

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

当然,ox,oy,dx和dy的值将是之前发送的值。

相关问题