我正在尝试将关联数组从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
所以,正在发生的事情是,即使获取“数据”变量的数据,由于它未被格式化,它总是重定向到“成功”页面。
有什么想法吗?
答案 0 :(得分:6)
你需要告诉jQuery解析JSON字符串。
$.post(addUserUrl, data, 'json').success(addUserCallback).error(errorCallback);
虽然我通常将成功回调传递给$.post
$.post(addUserUrl, data, addUserCallback, 'json').error(errorCallback);