iron-ajax响应为php json响应返回null
问题描述:
我是以下代码中的聚合物1.0的初学者我尝试从我的php文件获取json响应,此时Iron-ajax的on-response触发。我通过编辑php尝试了不同的响应,但它总是在我的控制台日志中显示为空。代码的代码iron-ajax响应为php json响应返回null
<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每一次的 ajax的一部分。
在我的PHP我有。
$resp = '{"success":1}';
echo $resp;
echo json_encode($resp);
无法弄清楚我做错了哪一部分。对于可能的愚蠢问题感到抱歉。
答
你这样做在PHP中都是错误的。首先json_encode
将数组或对象编码为json字符串,它将会跳过你的字符串,但那不是你想要的。其次,您不返回[ ]
括号,但无法使用JSON.parse
进行解析,也不能在javascript中用作JSON Object
。
你应该发回JSON content-type
,因为响应可能是不上钩槽JSON.parse
,并期待一个真正的JSON
,但在铁的AJAX文档handle-as="json"
手段:
JSON:使用XHR.responseText解析为JSON。
所以在使用XHR.responseText
的JSON.parse
元素iron-ajax
解析JSON
为对象,这意味着PHP头不是必需的,但你应该使用。
更改你的PHP代码是这样的:
<?php
$result = array('success' => 1);
header('Content-Type: application/json');
echo json_encode($result);
感谢很多人:)真正解决我的问题,我学到了不少从答案。 – Burhan