我是聚合物1.0的初学者,在下面的代码中,我试图在iron的响应触发时从我的php文件中获得json响应。我通过编辑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);不知道我做错了哪一部分。很抱歉有个愚蠢的问题。
发布于 2016-09-25 06:54:36
你在php中做错了所有的事情。首先,json_encode将数组或对象编码为json,它将转义您的字符串,但这不是您想要的。其次,返回两次没有[ ]括号,不能用JSON.parse解析,也不能在javascript中用作JSON Object。
您应该发回JSON,因为响应可能不是通过content-type连接起来的,并且期望得到一个真正的JSON,但是在JSON文档中,handle-as="json"意味着:
json:使用解析为JSON的XHR.responseText。
因此,iron-ajax元素使用XHR.responseText上的JSON.parse将JSON解析为一个对象,这意味着不需要PHP,但您应该使用。
更改php代码,如下所示:
<?php
$result = array('success' => 1);
header('Content-Type: application/json');
echo json_encode($result);https://stackoverflow.com/questions/39681004
复制相似问题