对于php json响应,iron-ajax响应返回null

时间:2016-09-24 21:12:14

标签: javascript php json ajax polymer-1.0

我是以下代码中聚合物1.0的初学者我试图从我的php文件中获取json响应时,铁-ajax的响应触发器。我通过编辑php尝试了不同的响应,但它总是在我的控制台日志中显示为null。 ajax代码的一部分

<iron-ajax
        id="ajax"
        method="POST"
        url="post_tip.php"
        handle-as="json"
        on-response="postResponse"
        >
    </iron-ajax>

脚本部分代码来处理响应

postResponse: function(r){
            console.log(r.detail.response);
            if(r.detail.response.success==1){
                console.log('Tip posted');
            }
            else{console.log('Error occured.not posted');}
        }

我无法找到任何错误,但r.detail.response每次都会返回null。

在我的PHP上我有。

$resp = '{"success":1}';
echo $resp;
echo json_encode($resp);

无法弄清楚我做错了哪一部分。抱歉可能存在愚蠢的问题。

1 个答案:

答案 0 :(得分:1)

你在php中做错了。首先json_encode将数组或对象编码为json字符串,它将转义你的字符串,但那不是你想要的。其次,您返回两次没有[ ]括号,无法使用JSON.parse进行解析,或者无法在javascript中用作JSON Object

您应该发送回JSON content-type,因为响应可能没有通过JSON.parse挂钩,并期待真正的JSON,但是在铁-ajax文档中{{3}意思是:

  

json:使用解析为JSON的XHR.responseText。

iron-ajax使用XHR.responseText上的<?php $result = array('success' => 1); header('Content-Type: application/json'); echo json_encode($result); 元素来解析handle-as="json"作为对象,这意味着PHP标头不是必需的,但您应该使用。< / p>

更改您的PHP代码:

0