在Jquery中正确显示验证结果


Displaying validation results properly in Jquery

我的问题有点复杂,但专家可能会理解我的意思。

我在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处理过的验证结果

My Issue is -我得到一些alpha数字字符串与验证结果如下

{"输出":","状态":1、"error_message":{"错误"("请输入你的名字。"》,"成功":[]}}

这是因为我有一个名为message.php的php文件,这个验证结果应该通过message.php来实现。它精确地处理和剥离不需要的字符,并正确地显示错误消息。

是否有办法在上面的JavaScript(Jquery)验证结果应该通过message.php而不是直接显示,以避免在验证结果中放置不需要的字符(只显示验证结果).

或者你有其他建议吗?

期待专家采取有利行动…

的问候汤姆

当关闭浏览器JavaScript时,结果是正确的,因为表单不是通过jquery-Ajax(通过form action=")提交的,验证消息是通过messages.php发送的。

消息显示为

<?php 
 echo $messages; 
 ?>

我忽略了data['output']data['status'],因为我真的不知道您打算如何使用它们以及它们可能具有的值。我假设返回的成功或错误消息对用户来说已经足够了。

它看起来像data包含JSON,所以为什么不拉出相关的成功或错误消息?

...
success: function(data)   
{
    var msg = data['error_messages']['success'][0] != '' ?  data['error_messages']['success'][0] : data['error_messages']['error'][0] ; 
   $('#results').html( msg );
}
...

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