2

我不认为我在单独的 PHP 和 AJAX 文件之间以正确的方式传递变量。

我通过触发$status = 'info';我的 PHP 文件中的第二个条件来调试它。

目前,status即将出现“未定义”alert(data.status);

注册进程.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;
};

我知道第二个条件正在被触发,因为我在那里放置了一个标头重定向只是为了测试并且它工作正常。

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 回答