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

new Ajax.Request を利用してちょっとしたメール送信フォームを作っています。
一通り完成はしたのですが、PHP側での未入力チェック後、jsでの受け取り方が分からず困っています。
-----
<javascript ソース>
function postData() {
 new Ajax.Request(
  "send.php", {
   method: "post",
   parameters: Form.serialize("myform"),
   onComplete: onCompleteHandler
  }
 );
}

function onCompleteHandler(request) {
 // ここでPHP側から未記入チェックを受信したい
}

<PHP ソース>
// 必須項目チェック
if( $formValue1 == "" || $formValue2 == "" ) {
 // ここから未記入を通知したい
}
-----
このようにPHP側で記入チェックし、それをjs側で受けとる方法が分からず困っています。
すみませんがどなたか教えていただけると助かります。

A 回答 (2件)

送信フォーム内容の事前チェックを、AJAX通信を利用して


サーバー側で行いチェックの結果をページ遷移せずに受け取りたい
という事でしょうか?
それなら
<PHP ソース>
// 必須項目チェック
<?php
header("Content-type:text/plain");
if( $formValue1 == "" || $formValue2 == "" ) {
 // ここから未記入を通知したい
echo "NG";
}
?>

<javascript ソース>
(prototype.jsですよねえ)

function onCompleteHandler(request) {
 // ここでPHP側から未記入チェックを受信したい
if(request.responseText == "NG"){
alert("記入に不備があります。");
}
}

※蛇足 onComplete:でなくonSuccess:を使うべきです。
onComplete:は通信が失敗しても実行されます。
    • good
    • 0
この回答へのお礼

お礼が遅くなりましてすいません。

完璧です!!
これでバッチリPHP側であらゆるチェックが行えそうです。

> ※蛇足 onComplete:でなくonSuccess:を使うべきです。
> onComplete:は通信が失敗しても実行されます。
これも理解が深まりました。
そうだったんですねー。

助かりました。

お礼日時:2009/12/28 06:35

ajaxの場合戻り値は特定のIDに紐づいたタグに格納する場合が


多いと思います。
そのデータをチェックすればよいのではないでしょうか?

document.getElementById("hoge").childNodes[0].nodeValue
とか
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

> document.getElementById("hoge").childNodes[0].nodeValue
> とか

上記はjavascriptでチェックする、という認識でよろしいでしょうか。
そのような方法が一般的というか無難なのでしょうか。

厳密なチェックであればPHPで行いたいと思っているのですが…。

見当違いな事を言ってたらご指摘いただけると助かります。

お礼日時:2009/12/21 17:38

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