我的问题有点复杂,但专家可能会理解我的意思。
我在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 );
}