gpt4 book ai didi

javascript - Iron-ajax 响应为 php json 响应返回 null

转载 作者:行者123 更新时间:2023-11-27 22:30:03 25 4
gpt4 key购买 nike

我是聚合物 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.parseXHR.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com