我有一个用户表单,它进行 AJAX 调用,它返回一个 JSON 对象供我根据用户输入的内容进行操作。当出现错误时(例如,用户没有在输入字段中输入任何内容),输入框名称将与错误消息一起返回,并存储在错误数组中,然后在 JSON 对象中返回。这是因为我将获取输入框名称,使用 jQuery 在 DOM 中找到它们,并在有错误的输入框之后放置一个带有错误消息的 span。我遇到的问题是,当我遍历 JSON 对象中返回的错误时,它不允许我访问错误的键(输入名称),只有数组位置(0、1、2、3、4 等)。我可以访问 JSON/jQuery 对象中的关联数组键还是我在某个地方出错了?
这是我的代码(我只包含了相关的代码):
这是 AJAX 调用返回
success : function(data) {
if(data.errors == 'undefined' && data.errors == null) {
...
} else {
jQuery(data.errors).each(function(k, v) {
var html = "<span class='inputError'>" + v + "</span>";
var errorSpan = '.signUpInputWrap input[name=' + k + ']';
...
});
}
}
所以,在那里你可以看到我正在尝试使用“k”(这是 json 中返回的输入框名称),所以我可以在 DOM 中访问它。尽管它使用数组位置而不是使用返回的名称。
这是生成错误数组并返回它的 PHP:
$result = $this->validateInput($post);
..
if($result['result'] == true) {
...
} else {
echo json_encode(array('errors' => $result['errors']));
}
private function validateInput($input) {
$errors = array();
foreach($input as $key => $inputItem) {
if($key == 'sports_instructed' || $key == 'activities_qualified' | $key == 'sports_qualified') {
continue;
}
if(empty($inputItem)) {
if($key == 'dob' || $key == 'dobMonth' | $key == 'dobYear') {
$errors['dob'] = "Please ensure all values are entered for date of birth";
unset($input[$key]);
}
$pieces = explode('_', $key);
foreach($pieces as &$piece) {
$piece = ucfirst($piece);
}
$name = implode(" ", $pieces);
$errors[$key] = "Please enter a value for " . $name;
}
}
if(empty($errors)) {
$result = array('result' => true);
} else {
$result = array('result' => false, 'errors' => $errors);
}
return $result;
}
这是 JSON 结果(如您所见,关键是我想使用 jQuery 来获取循环中的元素的输入名称):
{"errors":{"first_name":"Please enter a value for First Name","last_name":"Please enter a value for Last Name","telNum":"Please enter a value for TelNum","dob":"Please ensure all values are entered for date of birth","dobMonth":"Please enter a value for DobMonth","address":"Please enter a value for Address","city":"Please enter a value for City","county":"Please enter a value for County","postcode":"Please enter a value for Postcode","password":"Please enter a value for Password","password_confirm":"Please enter a value for Password Confirm"}}
我是否可以像在 PHP 中一样访问 Javascrip/jQuery 中的关联数组?谢谢