EthnaでgetJSONをpostに切り替えて死んだ話

jQueryでpostJSONする方法についての覚書 の続き。 EthnaでapiをgetJSONしていたところをpostに切り替えようとjQueryをいじっていました。 ↓こんな感じのコード [php] var par […]

広告ここから
広告ここまで

目次

    jQueryでpostJSONする方法についての覚書 の続き。

    EthnaでapiをgetJSONしていたところをpostに切り替えようとjQueryをいじっていました。

    ↓こんな感じのコード
    [php]
    var param = /*URLクエリパラメータ*/
    $.getJSON("api.php?action_getItemList=true" + param, function(json){
    //処理
    });
    [/php]

    とりあえず処理の流れを確認したくて$.ajaxにしてみます。
    [php]
    $.ajax({
    type: "GET",
    url: "api.php?action_getItemList=true" + param,
    dataType: "json",
    success: function(json){
    //処理
    }
    });
    [/php]

    元のコード同様の動作をしましたので、そのままPOSTに書き換えてみました。

    [php]
    $.ajax({
    type: "POST",
    url: "api.php?action_getItemList=true" + param,
    dataType: "json",
    success: function(json){
    //処理
    }
    });
    [/php]

    typeを書き換えた途端、空の値しか返ってこねぇorz

    いろいろ調べてみたところ、原因はかなりシンプルでした。

    アクションフォームはdataに入れる

    原因は「POSTの時はクエリパラメータ無しでURLが送られる」というだけ。

    なのでアクションフォームの「getItemList.php(api.php?action_getItemList=true)」にアクセスしたいはずが、「index.php(api.php)」にアクセスしてしまっていたということです。

    実際index.phpのreturn値をnullから他のものに書き換えると書き換えた値が返ってきました。

    なので$.ajaxでEthnaのPHPを呼び出すときは、action以下のクエリパラメータをdataに入れるようにします。

    [php]
    $.ajax({
    type: "POST",
    url: "api.php",
    dataType: "json",
    data: {
    action_getItemList: true
    },
    success: function(json){
    //処理
    },
    });
    [/php]

    ちなみに$.postを使う場合はこうなります。
    [php]
    $.post(
    "api.php",
    {action_api_item_getItemList: true},
    function(data) {
    console.log(data);
    },
    "json"
    );
    [/php]

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark