ajax投掷错误与正确的结果
我有以下function:
side= 'car'; var request_checkUrl = '/antibot/antibot_data?script=' + side; $.ajax({ url: request_checkUrl, dataType: 'application/json', complete: function(data){ alert("running.."); }, success: function(data){ alert("success"); }, error: function(data) { alert("ERROR"); console.log(data); } })
结果是:带有ERROR的框和运行。 它还在控制台日志中显示:
答案是正确的。 但是,为什么这段代码会抛出错误信息,什么时候应该成功呢?
我也试过get,getjson,ajax和数据类型json等等。但我得到了相同的结果。
我在这做错了什么?
编辑:
这是完整的回复:
{ "status": 200, "data": { "text": "en TV", "images": [ { "hash": "47a32df0c4b1f0b522e5faf35a46aacd95fe0ed4", "file": "ABImage_plane_1" }, { "hash": "e11f83f4411364546329c8a8bf88da0dffd27029", "file": "ABImage_house_2" }, { "hash": "93b4454ac09e7d7478fa2d25322e0e784370ea7a", "file": "ABImage_car_5" }, { "hash": "36fac21a830b922edb507487d833556aeb9688f7", "file": "ABImage_clock_4" }, { "hash": "cd1df47e052a5d0d50dab61b3e716339be0c6e68", "file": "ABImage_TV_3" }, { "hash": "59e7f70b7874a500e576e25077adf254c52f5ee8", "file": "ABImage_train_4" } ] } }
EDIT2:
这是我使用服务器端PHP的function
echo $this->framework->ajaxJSONResponse(200, $data);
和
function ajaxJSONResponse($status, $data) { header('Content-type: application/json'); $response = array(); $response['status'] = $status; $response['data'] = $data; return json_encode($response); }
编辑:即时通讯使用jquery 2.1.3
编辑:我也尝试过:
$.ajax({ url: request_checkUrl, type: "GET", dataType: "json", // "xml", "json" success: function (data) { alert("success"); alert(data); }, error: function (jqXHR, textStatus, ex) { alert(textStatus + "," + ex + "," + jqXHR.responseText); } });
输出错误:
再次更新:
我尝试使用以下urlvalidationurl: http : //www.freeformatter.com/json-validator.html
得到了:
The JSON input is NOT valid according to RFC 4627 (JSON specification). Unexpected token {"status":200,"data":{"text":"en TV","images":[{"hash":"47a32df0c4b1f0b522e5faf35a46aacd95fe0ed4","file":"ABImage_plane_1"},...
但如果我启用:
接受非引用的名称
我得到:
The JSON input is valid according to RFC 4627 (JSON specfication).
我怎么能按照我的要求做这个工作呢?
以下答案只是尝试帮助解决可能的问题。
尝试将代码修改为以下内容:
var side = 'car'; var request_checkUrl = '/antibot/antibot_data?script=' + side; $.ajax({ url: request_checkUrl, type: "GET", dataType: 'json', beforeSend: function () { document.title = "Running..."; }, success: function (data) { document.title = "Success."; alert("success"); }, error: function (data) { alert("ERROR"); console.log(data); } });
让我知道这个是否奏效。
更新:
在上次更新中,您将收到无效的json。 从PHP开始,您需要始终打印有效的json。 您可以使用此链接validation您的json输出: http : //pro.jsonlint.com 。
parsererror, SintaxError: Unexpected token
:这意味着,你在php代码中出错了。