我是以下代码中聚合物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);
无法弄清楚我做错了哪一部分。抱歉可能存在愚蠢的问题。
答案 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