php无法返回json格式怎么办

藏色散人
发布: 2023-01-29 09:40:17
原创
3628人浏览过
php无法返回json格式的解决办法:1、判断error的具体原因,执行“var a=JSON.stringify(error);alert(a);”代码;2、修改php代码,执行“var b= eval("(" + data + ")");”代码即可。

php无法返回json格式怎么办

本教程操作环境:Windows10系统、PHP8.1版、DELL G3电脑

php无法返回json格式怎么办?

php无法返回标准JSON格式:导致的$.ajax返回的数据无法执行success的解决方案

JSON的标准格式:{“键”:“值”,“键”:“值”}

立即学习PHP免费学习笔记(深入)”;

一、前端提交代码,如下

$.ajax({
                type: "post",
                url: "index.php?m=Index&a=accessIn&act=access",
                async: true,
                data: {
                    login_access: $('#login_access').val()
                },
                dataType: "text",
                success: function (data) {
                    if (data.codeId == "0") {
                        alert(data.err);
                    } else {
                       alert(data.err);
                      window.location.href = "index.php?m=Index&a=lockData";
                    }
                },
                error:function(error){
                    var a=JSON.stringify(error);
                    alert(a);
                }});
登录后复制

二、PHP后台处理后,返回代码:

            $res['err']    = "欢迎您";
            $res['codeId'] = "1";
登录后复制

console.log(data),可知为:{err:“输入密码错误!”,codeId:“0”},代码键无双引号,非标准JSON格式,会导致$.ajax返回的数据无法执行success。

三、分析如下:

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 30
查看详情 Find JSON Path Online
  • 判断error的具体原因,因返回的是[object object]对象格式,需要转为字符串格式,以便快速的查找原因:

var a=JSON.stringify(error);
 alert(a);
登录后复制

如果是格式不正确的话,基本上返回的错误代码为:readyState=4,status=200。

  • 一是修改php代码,直接返回标准的JSON格式,因漏刻有时数据可视化代码格式化的原因,本例采用返回前端进行解决;
    返回类型为:dataType: “text”,
    返回后格式为:{“err”:“输入密码错误!”,“codeId”:“0”},进行typeof(),可知为string格式,需要将字符串转化为JSON,采用eval函数:

eval() 函数用来执行一个字符串表达式,并返回表达式的值 ——来源于菜鸟教程

var b= eval("(" + data + ")");//一定按照该格式才是标准的JSON格式
登录后复制

完整的前端提交和返回代码:

$.ajax({
                type: "post",
                url: "index.php?m=Index&a=accessIn&act=access",
                async: true,
                data: {
                    login_access: $('#login_access').val()
                },
                dataType: "text",
                success: function (data) {
                    var b= eval("(" + data + ")");//string 2 json
                    if (b.codeId == "0") {//读取键值进行判断
                        alert(b.err);
                    } else {
                       alert(b.err);
                      window.location.href = "index.php?m=Index&a=lockData";//跳转页面;
                    }
                },
                error:function(error){
                    var a=JSON.stringify(error);//解析对象为字符串,快速确定原因;
                    alert(a);
                }});
登录后复制

Done!

推荐学习:《PHP视频教程

以上就是php无法返回json格式怎么办的详细内容,更多请关注php中文网其它相关文章!

相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号