我的问题并不复杂,但专家可能会理解我想要问的问题。
我在Jquery中有以下代码,它提交表单并显示目标页面的验证结果。
submitHandler : function(form) {
if($('#login').submit(function(){return false;}))
{
$.ajax
({
type: 'POST',
url: $('#login').attr('action'),
data: $('#login').serialize(),
success: function(data)
{
$('#results').html(data);
}
});
}
return false;
},
目标网页是在php中。 #results中显示的内容是php处理的验证结果
我的问题是 - 我得到一些带有验证结果的字母数字字符串,如下所示
{"输出":"""状态": - 1," error_messages" {&#34 ;错误":["请输入您的姓名。"],"成功":[]}}
这是因为我有一个名为message.php的php文件,这个验证结果应该来自message.php。它是exaclty处理和剥离不需要的charectors并正确显示错误消息。
在上面的JavaScript(Jquery)中是否有任何方法可以通过message.php而不是直接显示来验证结果,以避免在验证结果中放入不需要的字符(仅显示验证结果)。
或者您有任何其他建议?
期待专家的有利行动..
此致 TOM
其他信息 当关闭浏览器 JavaScript 时,结果正确生成,因为表单不通过jquery-Ajax提交(通过表单操作=""),验证消息通过消息传递。 PHP。
消息显示为
<?php
echo $messages;
?>
答案 0 :(得分:0)
我忽略了data['output']
和data['status']
,因为我真的不知道你打算如何使用它们以及它们可能拥有的价值。我假设返回的成功或错误消息对用户来说已经足够了。
看起来data
包含JSON,为什么不提取相关的成功或错误消息?
<强> DEMO 强>
...
success: function(data)
{
var msg = data['error_messages']['success'][0] != '' ? data['error_messages']['success'][0] : data['error_messages']['error'][0] ;
$('#results').html( msg );
}
...
答案 1 :(得分:0)
答案形式@gillyspy是对的。
唯一缺少的部分是将ajax返回数据字符串分配为jason。
将dataType: 'json',
添加到您的ajax请求中
或者将您的成功功能更改为
success: function(str)
{
var data =$.parseJSON(str);
var msg = data['error_messages']['success'].length != 0 ? data['error_messages']['success'][0] : data['error_messages']['error'][0] ;
$('#results').html( msg );
}