首頁 >後端開發 >PHP問題 >php無法回傳json格式怎麼辦

php無法回傳json格式怎麼辦

藏色散人
藏色散人原創
2023-01-29 09:40:173427瀏覽

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的標準格式:

{“鍵”:“值”,“鍵”:“值”}

一、前端提交程式碼,如下

$.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。

三、分析如下:

  • 判斷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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn