PHP echo使用浏览器,而不是jQuery

时间:2016-01-12 09:34:32

标签: javascript php jquery ajax

我正在为应用程序编写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);

2 个答案:

答案 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那样成功地使用它。