ホームページ  >  記事  >  バックエンド開発  >  php が json 形式を返せない場合はどうすればよいですか?

php が json 形式を返せない場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2023-01-29 09:40:173412ブラウズ

php が json 形式を返せない問題の解決策: 1. エラーの具体的な原因を特定し、「var a=JSON.stringify(error);alert(a);」コードを実行します。 PHPコードを変更して「var b= eval("(" data ")");」コードを実行するだけで十分です。

php が json 形式を返せない場合はどうすればよいですか?

このチュートリアルの動作環境: Windows 10 システム、PHP バージョン 8.1、DELL G3 コンピューター

次の場合はどうすればよいですかphpはjson形式を返すことができません??

#php は標準の JSON 形式を返すことができません: $.ajax によって返されるデータは成功した解決策を実行できません

JSON の標準形式: {"key":"value","key":"value"}

1. 次のようなフロントエンド送信コード

$.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);
                }});

2. PHP バックグラウンド処理後のリターン コードは:

            $res['err']    = "欢迎您";
            $res['codeId'] = "1";

console.log(data) で、次のように表示されます: {err: "Wrong passwd selected!", codeId: "0"}, code キーには二重引用符が含まれておらず、非標準の JSON 形式であるため、$.ajax によって返されるデータは失敗します。

3. 分析は次のとおりです:

  • エラーの具体的な原因を特定します。返されたオブジェクトの形式は [object object] であるため、変換する必要があります。理由を見つけてください:

var a=JSON.stringify(error);
 alert(a);

形式が正しくない場合、返されるエラー コードは基本的に:readyState=4、status=200 です。

  • 最初の方法は、php コードを変更して標準の JSON 形式を直接返すことです。データ視覚化コードの書式設定が欠落しているため、この例ではフロントエンドに戻ることで問題を解決しています。
    戻り値の型は :dataType: "text",
    戻り値の形式は次のとおりです: {"err": "間違ったパスワードが入力されました!", "codeId": "0"}、typeof() を実行すると、文字列形式であることがわかり、文字列を 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。