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]