プロが教える店舗&オフィスのセキュリティ対策術

jQueryの$.postにてPHPファイルをリクエストしています。
Ajax→PHPの処理後、Ajaxに処理が戻る際にPHPからAjaxに
値を受け渡し、さらにその値によってAjaxの処理を条件分岐させたい場合
どのような記述になるのでしょうか。
PHPからの戻り値は単なるテキストかtrue/falseで考えています。

それとも、そもそも$.postでは戻り値を処理する、
といった事はできないのでしょうか。

A 回答 (2件)

> なお、例えばPHPから配列データをAjaxに返す場合


> それをAjaxで参照するとなると、どのようになるのでしょうか。

Ajax では、基本的には「テキストデータ」でしかデータのやりとりは出来ません。
そのため、PHP 側で配列データをテキストデータに変換し、JavaScript側でテキストデータを配列データに戻す、といった処理が必要になります。
元々、その「テキストデータ」フォーマットとしては XML が想定されていたのですが(AjaxのX)、複雑でオーバーヘッドが大きいので、最近はJSONが使われる場合が多いです。

http://gihyo.jp/dev/feature/01/jquery-ajax/0002

PHP側については、PHP 5.2.0 以降なら、json_encode で、配列をJSON形式に変換できます。
http://php.net/manual/ja/function.json-encode.php

jQuery の Ajax ライブラリは、JSON に対応していますので、
$.post の第4引数を"json"にしておけば、
PHP側でJSON形式に変換した配列データを、
JavaScript側の$.post のcallback内では、引数 data がそのまま配列としてアクセス出来るようになります。

jQueryとPHP のJSONによる受け渡し例は、
http://www.rottel.net/kuwa/44111
なんかが参考になるでしょうか。
    • good
    • 0

$.ajax で、引数 async を false にしてリクエストを発行すれば、


関数呼び出し後に、リクエスト結果に基づいた条件分岐は可能です。
http://semooh.jp/jquery/api/ajax/jQuery.ajax/opt …

ただし、リクエストを発行したあと、応答が戻ってくるまで
スクリプト動作が止まってしまうため、操作性の問題からは
あまりオススメできません。

できれば、その処理そのものはそこで終わらせておき、
続きは $.post の callback内に記述すべきでしょう。
---ここから---
$.post("test.php",arg, function(data, status) {
// 通信成功後の処理
if (data == "true") {
PHP出力が「true」だった時の処理
} else {
そうでない時の処理
}
続きの処理
}, "text");
// ここから下には何も書かない。続きは上述のコールバック内に書く
---ここまで---
といった感じで。

この回答への補足

有り難うございます。

仰るとおりコールバックで実現できそうです。
なお、例えばPHPから配列データをAjaxに返す場合
それをAjaxで参照するとなると、どのようになるのでしょうか。

引き続き教えて頂けますと助かります。
宜しくお願い申し上げます。

補足日時:2010/02/03 10:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!