首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php json响应返回null。

问php json响应返回null。
EN

Stack Overflow用户
提问于 2016-09-24 21:12:14
回答 1查看 392关注 0票数 1

我是聚合物1.0的初学者,在下面的代码中,我试图在iron的响应触发时从我的php文件中获得json响应。我通过编辑php尝试了不同的响应,但是它总是在我的控制台日志中显示null。ajax部分代码

代码语言:javascript
复制
<iron-ajax
        id="ajax"
        method="POST"
        url="post_tip.php"
        handle-as="json"
        on-response="postResponse"
        >
    </iron-ajax>

处理响应的代码的脚本部分

代码语言:javascript
复制
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上。

代码语言:javascript
复制
$resp = '{"success":1}';
echo $resp;
echo json_encode($resp);

不知道我做错了哪一部分。很抱歉有个愚蠢的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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代码,如下所示:

代码语言:javascript
复制
<?php

    $result = array('success' => 1);

    header('Content-Type: application/json');
    echo json_encode($result);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39681004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档