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'}
  ]
}