Jquery 通过json数组循环:读取第一行并从第二行循环
对于下面这样的数组,如何仅读取第一行的值以及从第二行开始通过另一行的循环的值?我在代码中加入了注释,让您了解我试图实现的目标Jquery 通过json数组循环:读取第一行并从第二行循环,jquery,Jquery,对于下面这样的数组,如何仅读取第一行的值以及从第二行开始通过另一行的循环的值?我在代码中加入了注释,让您了解我试图实现的目标 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>PHP, jQuery search demo</title> <link rel="
<!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,jQuery搜索演示
$(函数(){
$(“.errCheck”)。单击(函数(){
$.ajax({
键入:“获取”,
url:“test_errors.php”,
数据类型:“json”,
cache:false,
成功:功能(数据){
//如果数组的第1行:success==True,我该怎么做?
//重定向
//否则
$('#errors div').empty();
$.each(数据,函数(loc,msg){//从第二个数组值开始,在本例中为errOne
$(loc).html(msg);
});
},
});
返回false;
});
});
我的测试错误消息文件:
<?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);
?>
假设
数据的值。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...
}
您可以使用计数器,因为对象上没有索引,只有键:
$(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;
});
});
可以使用shift()返回数组中的第一个元素并将其从数组中删除
var error=data.shift()
因此,var error将是您的检查,然后可以在$.each()中使用数据
@约瑟夫·西尔伯——祝贺你发现我在上面故意犯的错误-P
使用
依照
编辑我想这与另一个答案相同,但我觉得我还是用
并使用适当的布尔值,如其他地方所述
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'}
]
}
等等。您有返回的json的示例吗?{“成功”:“false”,“#errOne”:“输入有效用户名”,“#errTwo”:“输入有效电子邮件”,“#errThree”:“输入有效密码”}
$errors['success']=“false”代码>,因此这将始终计算为true。他应该在PHP中使用false
literal.@Esailija-我没注意到。虽然我无法想象为什么OP不会使用真正的布尔值。这是不确定的,因为循环顺序不是为对象定义的。@pimvdb-不仅如此,我根本不明白这个问题?$。每个(数据,函数(loc,msg){//我如何从这里的[1]开始而不是[0]例如:for(i=1;i-1.shift
是数组原型上的一种方法。它对对象不起作用(对象属性没有顺序)。
{
success: false,
errors: [
{fieldKey: 'string'},
{fieldKey: 'string'}
]
}