使用jQuery我已经制作了以下JSON数据:
[{"name":"date","value":"24-05-2013"},{"name":"omschrijving","value":""}]
这是所有有效的JSON,但是当我尝试使用jQuery触发数据时,它会给我以下错误:
意外的令牌A
在这里你可以看到AJAX调用:
$.ajax({
type: "POST",
url: "modules/rma/ajaxhandler.php",
contentType:"application/json; charset=utf-8",
data: goededata,
dataType: 'json',
succes: function(data) { alert(data); },
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert( textStatus + " " + errorThrown); }
}).done(function() {
});
ajaxhandler.php包含以下行:
<?php
error_reporting(E_ALL);
session_start();
/**
* Ajaxhandler
*
*/
print_r($_POST);
echo json_decode($_POST['data']);
?>
需要发送的数据采用以下方式:
var allFields = $( [] ).add( date ).add( omschrijving ).add( klachtomschrijving ).add(status).add(artikelnummer).add(klantid).add(meldidrepro).add(meldidaankoop).add(leverancier).add(inkoopregelid).add(serienummer);`
var goededata = JSON.stringify(allFields.serializeArray());
如何更正此错误?
答案 0 :(得分:10)
您无法使用print_r
,因为您正在请求json。服务器响应无效。注释掉print_r
电话,它应该有效。
意外的标记'a'来自print_r
的输出:
array(
...
)
您可以使用额外的密钥进行调试:
echo json_decode(array(
'data' => $_POST['data'],
'debug' => print_r($_POST, true), // note the second parameter for print_r
));
在客户端使用response.data
,调试输出位于`response.debug'。
但是,为什么不简单地将服务器端的调试输出记录到文件中?
error_reporting(E_ALL);
也是一个问题。
设置响应类型始终是个好主意:
header('Content-type: application/json');
答案 1 :(得分:3)
有可能你的print_r打破了你的AJAX请求的预期返回调用。此外,我没有看到任何后期数据被抛出的位置。我期望在这里发生的是一个空警报框。评论我们的print_r