我正在为应用程序编写Web界面。由于应用程序的精化时间可能很长,因此在启动时会向用户显示加载页面,然后AJAX调用会将输出加载到页面。如果我使用浏览器浏览PHP函数,我会得到正确的响应(JSON),但是当执行AJAX调用时,jQuery会收到错误500(我尝试使用相同的参数)。
这是JavaScript:
$.ajax({
type: "GET",
url: my_url,
dataType: 'json',
success: function(result){
if (result.status == "COMPLETED") {
window.alert("RETURNED");
$("hocrDisplay").attr("src", result.html);
$("hocrDownload").attr("href", resul.path);
$("#loaderImage").hide();
$("#hocrDisplay").show();
$("#hocrDownload").show();
window.alert("The file will be deleted in 10 minutes");
}else{
setTimeout(getStatus(requestid,filename), 3000);
}
},
error: function (response) {
alert("There was an error processing the document");
$("#loaderImage").hide();
}
});
这是围绕PHP echo的代码:
echo json_encode('{"status" : "COMPLETED", "html" : "' . $htmlname . '", "path" : "' . $tarpath . '"}');
ob_flush();
sleep(600);
unlink($tarpath);
unlink($htmlname);
答案 0 :(得分:1)
这一行错了:
echo json_encode('{"status" : "COMPLETED", "html" : "' . $htmlname . '", "path" : "' . $tarpath . '"}');
你应该创建一个数组,然后用JSON对它进行编码,如下所示:
$array = array("status"=>"COMPLETED",
"html"=>$htmlname,
"path"=>$tarpath);
echo json_encode($array);
这会为您编码正确的jSON。 500错误在服务器中,因此产生错误的行。
祝你好运,答案 1 :(得分:0)
您正在对已经编码的string
进行编码,使用array
比使用json_encode
函数进行编码更好。
您可以这样尝试:
// create an array for your values
$yourArr = array(
'status'=>'COMPLETED',
'html'=>$htmlname,
'path'=>$tarpath);
// encode the array in json format
echo json_encode($yourArr);
json_encode将返回此信息:
{"status":"COMPLETED","html":"test","path":"test2"}
现在,您可以像ajax
那样成功地使用它。