直到现在我用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']=' password not match';
}
and so on .
$message['email']=' wrong email';
和我的foreach json数组中的错误:
foreach($message as $key => $val) {
$return = array('error' => $key, 'message' => $val );
echo json_encode($return);
}
所以这里有一些错误,因为ajax响应代码有任何想法,因为错误导致它出错了吗?
答案 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":" wrong pass."},{"error":"email","message":" 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"});
}
}