FrontendJavaScript

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]

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

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

Related Category posts