使用JSON从PHP到Javascript的关联数组

时间:2012-01-06 20:11:39

标签: php javascript json

我正在尝试将关联数组从PHP发送到Javascript。但是,由于某种原因,输出是未定义的。这是代码:

PHP(虚拟数组):

$validationErrors = array("unregisteredName" => NULL,
"unregisteredEmail" => "Invalid e-mail", "unregisteredUsername" => NULL, 
"unregisteredPassword" => NULL);

$log = array("errors" => $validationErrors);
echo json_encode($log); 

使用Javascript:

var addUserCallback = function(data) {
    if(data.errors && data.errors.length) {
        $.each(data.errors, function(index, error) {
            console.log(error);
            $("#"+index).attr("placeholder", error);
        });
    }
    else {
        window.location="/users/success/";
    }
};

var errorCallback = function(xhr, status, error) {
    console.log(arguments);
};

self.addUser = function() {
    var data = {
        unregisteredName: $("#unregisteredName").val(),
        unregisteredEmail: $("#unregisteredEmail").val(),
        unregisteredUsername: $("#unregisteredUsername").val(),
        unregisteredPassword: $("#unregisteredPassword").val()
    };
    $.post(addUserUrl, data).success(addUserCallback)
        .error(errorCallback);
}

以下是我从Chrome的Inspector获得的信息:

数据: "↵{"errors":{"unregisteredName":null,"unregisteredEmail":"Invalid e-mail.","unregisteredUsername":null,"unregisteredPassword":null}}"
data.errors: Undefined

所以,正在发生的事情是,即使获取“数据”变量的数据,由于它未被格式化,它总是重定向到“成功”页面。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

你需要告诉jQuery解析JSON字符串。

$.post(addUserUrl, data, 'json').success(addUserCallback).error(errorCallback);

虽然我通常将成功回调传递给$.post

$.post(addUserUrl, data, addUserCallback, 'json').error(errorCallback);