使用下面的数组,我怎样才能从第二行开始读取第一行的值和从另一行读取的值?我在代码中包含了注释,让您了解我正在努力实现的目标。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>PHP, jQuery search demo</title>
<link rel="stylesheet" type="text/css" href="my.css">
<script type="text/javascript" src="http://localhost/dev/ajax/jquery.js"></script>
<script type="text/javascript">
$(function() {
$(".errCheck").click(function() {
$.ajax({
type: "GET",
url: "test_errors.php",
dataType:"json",
cache:false,
success: function(data){
//if 1st line of array: success == True How can I do this?
//Redirect
//else
$('#errors div').empty();
$.each(data, function (loc, msg) {//start from the second array value, in this case errOne
$(loc).html(msg);
});
},
});
return false;
});
});
</script>
</head>
<body>
<div id="container">
<div id="errors">
<div id="errOne"></div>
<div id="errTwo"></div>
<div id="errThree"></div>
</div>
<input type="submit" class="errCheck" value="Check">
</div>
</body>
</html>
我的测试错误消息文件:
<?php
$errors['success'] = "false";
$errors['#errOne'] = "Enter a valid username";
$errors['#errTwo'] = "Enter a valid email";
$errors['#errThree'] = "Enter a valid password";
echo json_encode($errors);
?>
答案 0 :(得分:1)
假设data.success
的值是true
或false
的字符串,请使用:
if ( data.success == 'true' ) {
window.location = 'http://new_url.com';
return;
}
delete data.success;
// Now just run the loop
理想情况下,您应该在success
中存储一个真实的布尔值。所以在PHP代码中你应该使用:
$errors['success'] = false;
// or
$errors['success'] = true;
然后,在您的JavaScript中,您将其检查为真正的布尔值:
if ( data.success ) {
// redirect...
}
答案 1 :(得分:1)
您可以使用shift()返回数组中的第一个元素并将其从数组中删除
var error = data.shift();
因此,var错误将是您的检查,然后可以在您的数据中使用$ .each()
使用
delete myObject.property; // or myObject[property]
根据How do I remove a property from a JavaScript object?
编辑我想这现在和另一个答案相同,但我觉得我不妨在...中编写代码。
并使用其他地方所述的适当布尔值
success: function(data) {
if(data.success == false) {
delete data.success;
$.each(data,function(loc, msg){
$(loc).html(msg);
})
} else {
// passed validation code
}
}
虽然我更喜欢像这样安排Json
{
success: false,
errors: [
{fieldKey: 'string'},
{fieldKey: 'string'}
]
}
等
答案 2 :(得分:0)
你可以使用一个计数器,因为对象上没有索引,只有键:
$(function() {
$(".errCheck").click(function() {
$.ajax({
type: "GET",
url: "test_errors.php",
dataType: "json",
cache: false,
success: function(data) {
if (data.success) document.location.href = 'http://google.com';
$('#errors div').empty();
$.each(data, function(loc, msg) {
$(loc).html(msg);
});
},
});
return false;
});
});