我在访问服务器端的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()
错误
答案 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的值将是之前发送的值。