我是聚合物 1.0 的初学者,在以下代码中,我试图在 Iron-ajax 的响应触发时从我的 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);
不知道我哪一部分做错了。抱歉,这个问题可能很愚蠢。
最佳答案
你在 php 中做的都是错误的。首先json_encode
会将数组或对象编码为 json 字符串,它会转义您的字符串,但这不是您想要的。其次,您返回两次没有 [ ]
括号,无法使用 JSON.parse
进行解析或不能用作 JSON Object
在 JavaScript 中。
您应该发回 JSON content-type
,因为响应可能不会通过 JSON.parse
Hook ,并期待真正的 JSON
,但在iron-ajax文档中handle-as="json"
意思是:
json: uses XHR.responseText parsed as JSON.
因此 iron-ajax
元素使用 JSON.parse
在 XHR.responseText
上解析 JSON
作为一个对象,这意味着 PHP header 不是必需的,但您应该使用。
更改您的 php 代码,如下所示:
<?php
$result = array('success' => 1);
header('Content-Type: application/json');
echo json_encode($result);
关于javascript - Iron-ajax 响应为 php json 响应返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681004/