在每个字段中拆分ajax json响应错误

时间:2013-08-12 08:17:40

标签: javascript ajax json

直到现在我用AJAX发布了正常的dataType'html',现在我转换它并使用dataType'json',

现在,在我使用json之前,我会在输入字段旁边的每个范围内分割响应错误。

这是我使用普通数据类型'html'的旧ajax succses拆分错误代码:

    success:
           function(data){

  var data_array = split('*');
                 for(var i=0; i<data_array.length-1; i++)
                 {
                    messgae_array = data_array[i].split(':');
                    $("#"+messgae_array[0]+"_error").html(messgae_array[1]);
                    $("#"+messgae_array[0]).css({"border":"1px solid red"});
                 }

}

这是我在表格上的输入

<input type="text" id="uname" name="uname" value="" class="inplaceError" />
<span id="uname_error"></span>

我有更多的输入我只是看它如何看起来..

所以每个输入都有一个包含ajax响应错误的span。

现在问题是我的旧代码知道处理html响应而不是json响应,我是javascript / ajax / json新手,我不知道如何更改拆分代码所以使用json响应而不是正常的html响应,有什么帮助吗?

修改

我解决了这样的错误:

   if(isset($_POST['p']) && !empty($_POST['p']))
    {
        if($password == $retype)
            {
            $random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));
        // Create salted password (Careful with the chilli)
        $password = hash('sha512', $password.$random_salt);

        }
        else
        {
          $message['password']='&nbsp;password not match';
        }

and so on .

  $message['email']='&nbsp;wrong email';

和我的foreach json数组中的错误:

  foreach($message as $key => $val) {


          $return = array('error' => $key, 'message' => $val );
         echo json_encode($return);

           }

所以这里有一些错误,因为ajax响应代码有任何想法,因为错误导致它出错了吗?

2 个答案:

答案 0 :(得分:2)

您不必在数据中拆分字符串。如果它采用正确的JSON格式,您可以使用对象表示法轻松访问它(也可以通过数组表示法):

var json = '{
  "someVar":true,
  "error":"my fatal error message"
}';

var obj = JSON.parse(json);

alert(obj.error);

这就是创建JSON的原因,以便于访问和使用。如果您仍然要手动编辑和拆分字符串以从JSON中读取数据,那么您做错了。

编辑: 如果您需要识别和整理邮件,请使用嵌套的json。

var json = "errors": [{
        "id": "001",
        "field": "textfield1",
        "message": "message1."
    },
    {
        "id": "002",
        "field": "textfield2",
        "message": "message2."
    }];

    var obj = JSON.parse(json);

您现在可以将样式应用于这些字段,并显示消息:

foreach(obj.errors as err) {
  $("#"+err.field).html(err.message);
  $("#"+err.field).css({"border":"1px solid red"});
}

答案 1 :(得分:0)

success:function(data)
        {
          // consider your data is like this JSON string
          // var data= [{"error":"uname","message":"&nbsp;wrong pass."},{"error":"email","message":"&nbsp;wrong name"}];
          // instead of this
          // var data_array = split('*');
          // use this

          //change your json parser to this
          var data_array = JSON.parse(data);
          for (var i in data_array )
          {
             $("#"+data_array[i].error+"_error").html(data_array[i].message);
             $("#"+data_array[i].error).css({"border":"1px solid red"});
          }    
}