我在我的联系表单上使用jQuery来构建我们正在构建的Web应用程序,我从服务器获取JSON响应:
{"success": true}
到目前为止,这是我的jQuery:
$('.contact-form').on('submit', function(e) {
// Prevent submitting
e.preventDefault();
// Loading from data-* attr
var $submit = $('#contact-submit');
$submit.html($submit.data('text'));
// Form data
var form = $(this);
var post_url = form.attr('action');
var post_data = form.serialize();
// Ajax call
$.ajax({
type : 'POST',
url : post_url,
data : post_data,
dataType: 'json',
success: function(){
},
error: function(){
}
});
});
我已经碰壁了,因为在“成功”jQuery方法之前我从来没有“检查过”JSON响应,有人可以帮忙解决这个问题吗?我正在寻找一种方法来检查我得到的响应,如果显示“是”,我将显示“已发送成功”消息。
答案 0 :(得分:7)
成功回调会将json对象作为第一个参数,你可以在回调中使用它,如下所示
$.ajax({
type : 'POST',
url : post_url,
data : post_data,
dataType : 'json',
success : function(data) {
if(data.success){
//do something if success
}
},
error : function() {
}
});
答案 1 :(得分:2)
为什么不使用例如HTTP代码200(OK)或201(Created)来回复服务器。然后在jQuery中自动落入成功参数,一切顺利。
当服务器出错时,使用例如代码422(Unprocessable Entity),然后jQuery ajax会自动出错。
如果这是不可能的,只需尝试使用JSON.parse(数据)解析并沿着树向下走。如果解析失败,则json无效。
假设Java Backend,你的回复看起来像这里描述的那样:How to send a HTTP error for a Java RESTful web service?;这实际上取决于您使用的类/框架。例如,将HttpReponse状态设置为422。
你的ajax电话看起来像是:
$.ajax({
type : 'POST',
url : post_url,
data : post_data,
dataType: 'json',
success: function(){
// Everything went okay
},
statusCode: {
422: function() {
// Something went wrong (error in data serverside)
}
}
});
答案 2 :(得分:1)
以下内容应该有效:
success: function(result) {
var thing = $.parseJSON(result.d);
if (thing.success) {
}
}