2

別々のPHPファイルとAJAXファイルの間で変数を正しい方法で渡していないと思います。

$status = 'info';PHPファイルの2番目の条件をトリガーして、これをデバッグしています。

現在、status「未定義」として登場していますalert(data.status);

signup_process.php

if (condition){

   $status = 'success';

else {

    $status = 'info';

    }

AJAX

function send() {
var data = $('#signup_form').serialize();
    $.ajax({
        type: "POST",
        url: "signup_process.php",
        data: data,
        success: function (data) {
        alert(data.status);
            if (data.status == 'success') {
                // everything went alright, submit
                $('#signup_form').submit();
            } else if (data.status == 'info')
            {
                console.log(data.status);
                $("label#email_error").show(); 
                return false; 
            }
        }
    });
    return false;
};

テストのためだけにヘッダーリダイレクトを配置したため、2番目の条件がトリガーされていることがわかりました。これは正常に機能しました。

4

2 に答える 2

7

phpからajaxにデータを返すときにjsonを使用するとよいでしょう。

$return_data = array();
if (condition){
   $return_data['status'] = 'success';
} else {
    $return_data['status'] = 'info';
}

echo json_encode($return_data);
exit();

ここで、jsonデータをajaxに返す場合は、以下のようにajax呼び出しに返すデータ型を指定する必要があります。

function send() {
var data = $('#signup_form').serialize();
    $.ajax({
        type: "POST",
        url: "signup_process.php",
        data: data,
        dataType: 'json', 
        success: function (data) {
        alert(data.status);
            if (data.status == 'success') {
                // everything went alright, submit
                $('#signup_form').submit();
            } else if (data.status == 'info')
            {
                console.log(data.status);
                $("label#email_error").show(); 
                return false; 
            }
        }
    });
    return false;
};
于 2012-10-06T18:44:39.543 に答える
3

phpからJSONオブジェクトを返送する必要があります。

$data = array();
if (condition){
   $data['status'] = 'success';
else {
   $data['status'] = 'info';
}

header('Content-type: application/json');
echo json_encode($data);

json_encode ()メソッドは配列をJSONオブジェクトに変換するため、js側で名前を使用して各配列キーにアクセスできます。

于 2012-10-06T18:35:25.050 に答える