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

标签 javascript php json ajax polymer-1.0

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

相关文章:

php - mysql 和 php 函数未正确显示 % 百分号

php - 如何使用 php 删除/删除 mySQL 中的特定表行?

json - 从 JSON 数据生成 JSON 模式的工具

javascript - CSS3 在 FF 和 Chrome 中的过渡不一致

javascript - 什么可能导致我的页面在加载时滚动到底部?

javaScript 问题 - setItem 正在覆盖本地存储

php - SQL - 查询运行非常慢

javascript - 在 d3 图中的 <g> 元素上触发悬停事件

java - 函数返回空(范围问题)

Android XML 到 JSON 的转换, bool 值包含在 ""内