如何将PHP变量添加到AJAX?

如何将PHP变量添加到AJAX?,php,jquery,ajax,server-side-scripting,Php,Jquery,Ajax,Server Side Scripting,我认为我没有在单独的PHP和AJAX文件之间正确地传递变量 我正在通过触发第二个条件来调试它$status='info'在我的PHP文件中 当前,状态将作为警报(data.status)的“未定义” signup_process.php if (condition){ $status = 'success'; else { $status = 'info'; } 阿贾克斯 我知道第二个条件被触发了,因为我在那里放了一个头重定向,只是为了测试,它工作得很好。您应该从

我认为我没有在单独的PHP和AJAX文件之间正确地传递变量

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

当前,
状态
将作为
警报(data.status)的“未定义”

signup_process.php

if (condition){

   $status = 'success';

else {

    $status = 'info';

    }
阿贾克斯


我知道第二个条件被触发了,因为我在那里放了一个头重定向,只是为了测试,它工作得很好。

您应该从php发回一个JSON对象:

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

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

该方法将数组转换为JSON对象,这样您就可以在js端按名称访问每个数组键。

在将数据从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;
};

好的,但是我不确定为什么我需要一个数组,如果每个条件每次只有一个值。还是作为密钥/值对发送?我刚刚用第二个条件的块
$data=array()上的所有代码尝试了这个方法//将变量发送回AJAX$data['status']='info';echo json_encode($data);}
AJAX部分是否应该像我写的那样工作?您需要将数据类型:'json'更改为AJAX调用以获取返回中的json数据我已经修改了答案,以包含正确的json
内容类型
标题,因为jQuery AJAX会基于此猜测响应数据类型,如果您没有在ajax参数中指定
数据类型
参数(您还没有指定)。@user1390395作为替代方案,您可以指定
数据类型:'json'
参数,就像@GBD指出的那样,但它必须是带大写字母
t
的驼峰大小写。参数名称为大小写时,所有小写字母都不起作用-sensitive@user1390395-是的,JSON是一个键值对系统,这就是为什么要使用数组。。。。e、 数组('hello'=>'mum')被编码为JSON字符串{“hello”:“mum”}。jQuery然后会自动将其解码为一个javascript对象,该对象具有属性“.hello”,值为“mum”,我添加了数据类型,变量仍然显示为“undefined”。我只是测试以确保集合“info”条件被触发,并且它是。在这种情况下,
(data.status)
不应该是
(return\u data.status)
?谢谢,不用了。它应仅为data.status。return_data.status这是错误的
datatype:'json'
应该是
datatype:'json'
sensitive@spider是的,你是对的。我错过了。。谢谢编辑我的答案
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;
};