0

以下のような配列を使用して、最初の行のみの値と、2 行目以降のループの値を読み取るにはどうすればよいですか? 私が達成しようとしていることのアイデアを提供するために、コードにコメントを含めました。

<!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);

?>
4

3 に答える 3

1

の値が または のいずれかdata.successの文字列であると仮定すると、次のように使用します。truefalse

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...
}
于 2012-08-19T15:25:38.700 に答える
1

shift() を使用して、配列の最初の要素を返し、配列から削除できます

var エラー = data.shift();

したがって、 var エラーがチェックされ、データを $.each() で使用できます

@Joseph Silber - 上記の私の意図的な間違いを見つけておめでとうございます;-P

使用する

delete myObject.property; // or myObject[property]

JavaScriptオブジェクトからプロパティを削除するにはどうすればよいですか?

EDITこれは別の答えと同じだと思いますが、コードを書いたほうがいいと感じました...

他の場所で述べたように、適切なブール値を使用します

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

等。

于 2012-08-19T16:13:13.053 に答える
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;
    });
});​
于 2012-08-19T15:30:31.440 に答える