javascript - 拆分每个字段中的ajax json响应错误

标签 javascript ajax json

到目前为止,我使用普通 dataType 'html' 的 AJAX post,现在我将其转换并使用 dataType 'json' ,

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

这是我使用普通数据类型“html”的旧ajax成功分割错误代码:

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

           }

所以 foreach 的错误是错误的,因为 ajax 响应代码是错误的,你知道吗?

最佳答案

您不必分割数据中的字符串。如果它采用正确的 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"});
}

关于javascript - 拆分每个字段中的ajax json响应错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18182301/

相关文章:

javascript - 如何更改 Angularjs 可编辑文本/文本区域行为?

javascript - 从 Ajax Jsonp 中获取数据

javascript - 在django中使用ajax将数据从mysql传递到html

json - 如何避免与 "ConvertTo-Json"一起使用 powershell 2.0?

javascript - 如何仅使用按钮而不是整行拖放?

ninja 的 javascript 新手无法使书籍代码正常工作

php - 我的排序方法有什么问题(AJAX、PHP MySQL)

python - Django 中的 JSON 对象数组解析

javascript - 如何使用 Javascript 将值存储在 JSON 中?

javascript - 在 Firefox 中使用 jQuery(用户脚本)添加表单链接