0

jqueryを使用したときにページが返すものを特定することは可能ですか? 次のようにjqueryを使用してフォームを送信しています:

$("#sform").submit(function() {
    $.ajax({
        type: "POST",
        data: $(this).serialize(),
        cache: false,
        url: "user_verify.php",
        success: function(data) {
            $("#form_msg").html(data);
        }
    });
    return false;
});

user_verify.php ページは通常の検証作業を行い、エラー メッセージを返すか、成功するとデータベースにユーザーを追加します。エラーが発生した場合は、一連のエラー メッセージが表示されるか、成功した場合は通常、「サインアップに成功しました」と表示されます。エラーメッセージが返された場合、または成功メッセージが表示された場合、jqueryを使用して特定できますか。そうすれば、エラーが発生した場合はそのデータをフォームで使用でき、成功した場合はフォームを閉じて成功メッセージを表示できます。

4

4 に答える 4

1

はい、これです:

success: function(data) {
    $("#form_msg").html(data);
}

好きなように操作できdataます。サーバー側からJSON (を使用dataType) でエンコードされた文字列を返し、success関数でデータを処理できます。

success: function(data) {
    if(data->success == 'ok'){
       // hide the form, show another hidden div.
    }
}

user_verify.phpたとえば、次のように出力する必要があります。

// .... queries 
$dataReturn = array();
$dataReturn['success'] = 'ok';
$dataReturn['additional'] = 'test';
echo json_encode($dataReturn);
die; // to prevent any other prints.
于 2012-08-17T13:36:49.923 に答える
0

「success」コールバック関数で「data」パラメーターを確認できます。あなたのコードに問題があることに気づきました。この行を見てください:

data: $(this).serialize(),

$.ajax jquery メソッド内では、「this」は $('#sform') ではなく、グローバル ウィンドウ オブジェクトにバインドされます。

于 2012-08-17T14:07:26.313 に答える
0

エラーが発生した場合はphpに0を返させることができるので、内部で次のようなことを行います

 success: function(data) {
       if(data==0){
       //do error procedure
       }else{
        //do success procedure
       }
    }

お役に立てれば

于 2012-08-17T13:37:42.683 に答える
0

次のようなことができます:

$.ajax({
type:"POST", //php method
url:'process.php',//where to send data...
cache:'false',//IE FIX
data: data, //what will data contain 
//check is data sent successfuly to process.php
//success:function(response){
//alert(response)
//} 
success: function(){ //on success do something...
$('.success').delay(2000).fadeIn(1000);  
//alert('THX for your mail!');
} //end sucess 
}).error(function(){ //if sucess FAILS!! put .error After $.ajax. EXAMPLE :$.ajax({}).error(function(){}; 
alert('An error occured!!');
$('.thx').hide();
});
 //return false prevent Redirection
  return false;
});
于 2012-08-17T13:50:16.797 に答える