0

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

我在 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.ini 中。#results中显示的内容是php处理的验证结果

我的问题是 - 我得到了一些带有验证结果的字母数字字符串,如下所示

{"output":"","status":-1,"error_messages":{"error":["请输入您的姓名。"],"success":[]}}

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

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

或者你有什么其他建议?

期待专家的有利行动..

问候汤姆

附加信息 当关闭浏览器JavaScript时,结果会正确生成,因为表单没有通过 jquery-Ajax 提交(通过 form action="")并且验证消息来自 messages.php。

消息显示为

<?php 
 echo $messages; 
 ?>
4

2 回答 2

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 );
            }
于 2013-05-05T07:22:45.373 回答
0

我忽略了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 );
}
...
于 2013-05-05T06:15:55.717 回答