サポート » プラグイン » 管理画面でのAJAX戻り値が想定と違う

  • 解決済 sebon77

    (@sebon77)


    プラグイン管理画面でAJAXを使用したいと思いまして、実装自体はできたと思います。
    ただ戻り値が正しく受け取れません

    PHP側で
    `$ret = array(‘
    "name"=>"名前",
    "desc"=>"説明"
    );
    echo json_decode($ret);

    のような形で出力してAJAXの戻り値をコンソールに出すと
    {"name":"\u30bf\u30a4\u30c8\u30eb\ ・・・
    の形になり、正しく受け取れてません。
    (一応jQueryでパースしてみましたができない)
    希望は通常のPHP+Javascript時のように、successでの戻りをresとかにした場合は、res.titleで受け取りたいのです。

    PHP側で
    header("Content-Type: application/json; charset=utf-8");
    の後にechoすると、今度はAJAX側で何も出力されません。

    何かヒントをお願いします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • モデレーター jim912

    (@jim912)

    不要な改行など出力されていないか確認してみてください。

    ※ json_encodeですよね?

    >jim912さん
    すみません、json_encodeで正解です。

    色々試したところ、PHP側の出力で

    $ret = array("name"=>"あいうえお","desc"=>"かきくけこ","pos"=>"左上");
    echo json_encode($ret,JSON_UNESCAPED_UNICODE) . PHP_EOL;

    としてやることで、javascript側でsuccess(res)として受けて
    console.log(res)
    とすることで
    {"name":"あいうえお","desc":"かきくけこ","pos":"左上"}
    として受け取ることは出来ました。

    結局 res.name としても受け取れなかったのですが、文字化けが解消したからでしょうか、
    var tmpres = JQuery.parseJSON(res);
    でJSON変換が出来ましたので、
    tmpres[0].name
    でnameに、その他にもアクセス出来るようにはなりました。

    ちょっと想定とは違う形で、納得はいってませんがプラグイン管理画面でのAJAXその物は受け取りも出来ましたのでこれ自体は解決とさせて頂きます。

    jim912さん、ありがとうございました。

    モデレーター jim912

    (@jim912)

    {"name":"\u30bf\u30a4\u30c8\u30eb

    の形式は、ユニコードエスケープ形式といって、ユニコードの文字列を符号化したもので、文字化けではありません。

    js側での dataType は、指定されていますか?

    >js側での dataType は、指定されていますか?
    >jim912様
    Wordpressじゃない時に指定したことがなかったのでしていませんでした。

    カスタム分類で「特集」みたいのを追加してあり、その一覧の行毎の横に「編集」みたいなボタンが設置してあります。
    でそのボタンをクリックすることでAJAXでタームIDを送信してPHPでその特集の記事リストを生成して戻り値で送ると言うことをやりたかったのです。

    送信時のデータタイプにしか関係ないと思い込んでいて、JSONデータを送りたいわけでもなかったので無指定で今まで気にしてませんでしたが、戻り値にも影響する訳でしょうか?

    モデレーター jim912

    (@jim912)

    このあたり参考になりますでしょうか。

    ajaxで返ってきた値がjsonにならない問題

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「管理画面でのAJAX戻り値が想定と違う」には新たに返信することはできません。