我有这个代码,它工作得很好。问题是,不是在div中显示文本消息,而是打印以下消息:[object Object] ..我使用以下函数浏览Web并跟踪线程:
console.log()我可以在控制台中看到这条消息(感谢firebug),但我在div中看不到它......
我错过了什么?
代码:
$(document).ready(function() {
$("#form_mail").validate({
rules: {
'email': {
required: true,
},
'oggetto': {
required: true,
},
'msg': {
required: true,
},
},
submitHandler: function() {
$.ajax({
type: 'POST',
url: 'mail.php',
data: $('#form_mail').serialize(),
complete: function(html) {
console.log(html);
$('#message').show().text(html).fadeOut(3000, "linear");
}
});
}
});
});
答案 0 :(得分:1)
您的问题是,您使用的是complete
方法,而不是success
。你在那里得到一个物体的原因是非常明显的。 From documentation:
complete:Function(jqXHR jqXHR,String textStatus)一个函数 在请求完成时调用(成功和错误之后) 回调被执行)。该函数传递了两个参数:The jqXHR(在jQuery 1.4.x,XMLHTTPRequest中)对象和一个字符串 对请求的状态进行分类
看到了吗?好。
为了使其按预期工作,请将complete
替换为success
success: function(html) {
console.log(html);
$('#message').show().text(html).fadeOut(3000, "linear");
}
答案 1 :(得分:0)
尝试添加属性" dataType" =" html"或" dataType" =" text"到ajax选项。
$.ajax({
type: 'POST',
url: 'mail.php',
data: $('#form_mail').serialize(),
dataType: "html",
complete: function(html) {
console.log(html);
$('#message').show().text(html).fadeOut(3000, "linear");
}
});
答案 2 :(得分:0)
jquery返回一个xhr对象,而不是纯文本。
要访问文本响应,您需要调用responseText。见下文
$.ajax({
type: 'POST',
url: 'mail.php',
dataType: "text"
data: $('#form_mail').serialize(),
complete: function(res) {
$('#message').show().text(res.responseText).fadeOut(3000, "linear");
}
});
答案 3 :(得分:-1)
我宁愿在这里使用,因为成功被jQuery 1.8中的done取代。当它失败时和成功时完成处理,这样你就可以在完成时处理这两种情况,而不仅仅是成功。正如bad_boy指出的那样,来自文档:
complete:Function(jqXHR jqXHR,String textStatus)一个函数 在请求完成时调用(成功和错误之后) 回调被执行)。该函数传递了两个参数:The jqXHR(在jQuery 1.4.x,XMLHTTPRequest中)对象和一个字符串 对请求的状态进行分类
$(document).ready(function() {
$("#form_mail").validate({
rules: {
'email': {
required: true,
},
'oggetto': {
required: true,
},
'msg': {
required: true,
},
},
submitHandler: function() {
$.ajax({
type: 'POST',
url: 'mail.php',
data: $('#form_mail').serialize()
}).done(function(data){
$('#message').show().text(data).fadeOut(3000, "linear");
});
}
});
});