繁体   English   中英

AJAX:从PHP返回会引发错误:请求的JSON解析失败

[英]AJAX: Return from PHP fires error: requested JSON parse failed

当我使用对PHP的AJAX调用运行我的小JavaScript时,它总是返回JSON parsererror。

在PHP中,我可以看到我的json充满了这样的数组:json编码: {"Year":"2012","Make":"Ford","Model":"Taurus","Error":"no error"}

是网站:

当访客离开左侧的VIN字段时,将调用AJAX,并应自动填充右侧的3个字段。

 function decode_my_vin(myvin) { alert("javascript began"); dataoneID = '00000'; dataoneKEY = 'x0x0x'; jQuery.ajax( { cache: false, type: 'POST', url: '/wp-content/themes/Impreza-child/vin-decoder.php', dataType: "json", data: { 'value1_VIN': myvin, 'value2_ID': dataoneID, 'value3_KEY': dataoneKEY, }, success: function(response) { var resultYear = response.Year; var resultMake = response.Make; var resultModel = response.Model; var resultMessage = response.Message; alert("success returned: Year " + resultYear + " Make " + resultMake + " Model " + resultModel + " Message " + resultMessage); document.getElementById("fld_7290902_1").value = resultYear; document.getElementById("fld_1595243_1").value = resultMake; document.getElementById("fld_7532728_1").value = resultModel; document.getElementById("fld_7532728_1").value = resultMessage; return; }, error: function (jqXHR, exception) { var msg = ''; if (jqXHR.status === 0) { msg = 'Not connect.\\n Verify Network.'; } else if (jqXHR.status == 404) { msg = 'Requested page not found. [404]'; } else if (jqXHR.status == 500) { msg = 'Internal Server Error [500].'; } else if (exception === 'parsererror') { msg = 'Requested JSON parse failed.'; } else if (exception === 'timeout') { msg = 'Time out error.'; } else if (exception === 'abort') { msg = 'Ajax request aborted.'; } else { msg = 'Uncaught Error.\\n' + jqXHR.responseText; } alert("Error in jquery: " + msg); $('#post').html(msg); }, complete: function(value) { alert("returned after complete: " + value); } }); } 
 <?php header('Content-Type: application/json'); $vinResult = array( 'Year' => '2012', 'Make' => 'Ford', 'Model' => 'Taurus', 'Error' => 'No Error' ); echo json_encode($vinResult); ?> 

在ajax调用的错误函数中,它给出$('#post').html(msg); 说不起作用。 尝试使用jQuery('#post')代替$('#post')

要解析您的响应,请使用var data = jQuery.parseJSON( response ); 然后按数据访问字段。 data.Year等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM