duanrenzou1619 2014-08-20 13:31
浏览 97

JQuery $ .ajax请求json响应

A JSON returned as response to this request is not recognized.

request = $.ajax({
        url: "form_handler.php",
        type: "post",
        dataType: "json",
        data: serializedData

The php code in form_handler.php which returns the response:

if ($success) {
    echo json_encode(array("success"=>"false"), JSON_PRETTY_PRINT); 
    echo json_encode(array("success"=>"true"), JSON_PRETTY_PRINT); 

And thus in:

    alert(data.success);     // error: cannot read property of 'success' of null 
  • 写回答

4条回答 默认 最新

  • douji8033 2014-08-20 13:55

    I'm writing this as a wrap up of the answers and comments posted.

    As @jetawe and @FelixKling pointed out, it would be a best practice to specify the Content-Type of the response, so add this at the head of the php script:

    header('Content-Type: application/json');

    @hindmost pointed out that the script is not failing since jqXHR.done() is actually called.

    My guess is that there is a failure decoding the json object when $.ajax automatically decodes it (because of dataType: "json")

    As @PaulRoub noticed, JSON_PRETTY_PRINT exists from the PHP version 5.4 so, if you have an older version of PHP, that constant wouldn't exists, throwing an error of level E_NOTICE and assuming the value null. Passing null (equal to 0) as a value json_encode would work anyway (assuming default behavior)

    My second guess is that you have display_errors = 1 and error_reporting = E_ALL so PHP is printing out the error breaking the json.

    I hope I guessed right!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?



  • ¥15 Mac虚拟机安装Windows,Windows中用idea跑项目,报错process finished with exit code -1073741819(0xc0000005) 如何解决?
  • ¥15 关于python爬虫返回js数据结构的处理
  • ¥15 ubuntu所用stm32标准库开发烧录没反映
  • ¥15 运维工程师(在职人员回答)
  • ¥15 Kmeans的趋势分析有会的吗
  • ¥20 R语言单细胞测序 对seurat对象进行标准化时出现问题
  • ¥15 请问如何在matlab里使用raven工具?
  • ¥100 关于ios手游充值到一定金额,再点充值提示公众号的问题。
  • ¥15 求一个stm32串口控制程序
  • ¥20 Windows 驱动开发版本疑问相关