Ajax请求在js检查后返回响应
Ajax request return the response after js check
我不会为误导性的标题感到抱歉,我会努力解释得更好。我的客户用个人信息填写了一个表单,这些信息通过调用php函数的ajax请求进行验证。如果验证成功,此php函数将返回SUCCESS
,而不是返回异常。现在,当用户点击下一个按钮时,javascript代码调用此函数:
if(!FrontendBook.validateCustomerForm())
{
return; //FAIL
} else
{
//do stuff
}
validateCustomerForm
函数包含以下内容:
var postUrl = GlobalVariables.baseUrl + 'backend_api/ajax_save_customer';
var postData = { 'customer': JSON.stringify(GlobalVariables.customerData) };
$.post(postUrl, postData, function(response)
{
if(response.status == "SUCCESS")
{
return true;
}
else
{
return false;
}
}, 'json');
现在,在浏览器控制台中,我可以正确地看到响应内容,如果我在response.status == "SUCCESS"
中放入警报,则警报将正确显示
起初我不明白为什么在if(!FrontendBook.validateCustomerForm())
代码在return语句中输入,在fail验证中也是如此。但我做了这个测试:
- 在
console.log()
中打印FrontendBook.validateCustomerForm
的结果 - 检查条件所在的语句
在console.log
中,我得到了undefined
,当然条件语句也属于return; //FAIL
也许这是时间问题?有人可以解释为什么当我在特定的比赛中返回true或false时,函数返回undefined?
您似乎误解了promise和此函数调用的异步性质。按照以下方法我们可以做到这一点。。。
// declaration
function validateCustomerForm() {
var postUrl = GlobalVariables.baseUrl + 'backend_api/ajax_save_customer';
var postData = { 'customer': JSON.stringify(GlobalVariables.customerData) };
return $.post(postUrl, postData); // return promise object
}
// usage
validateCustomerForm().done(function(response) { // resolve promise
if(response.status == "SUCCESS")
/*...*/
});
查看jQuery延迟api以获取更多信息,因为我们将从您的函数返回一个promise,然后稍后进行解析。
JSFiddle链接-简化的演示
相关文章:
- 调用Ajax并返回响应
- 可以链接 '.then() 的返回响应,顺序与 '.then()' 的顺序不同
- 节点.js和表达式:如何在异步操作后返回响应
- 嵌入 iframe 不会返回响应式设计
- 将数据从js发送到servlet并返回响应
- nodejs或expressjs在没有返回响应的情况下重复调用路由
- 回调返回响应,但当在API中发送时,响应在节点JS中显示为空白
- 挂起的回调:在每次回调返回之前返回响应
- AngularJS web服务是否应返回响应的深层副本
- 从PHP执行一个javascript函数并返回响应
- 在检查响应时在http之前返回响应
- 节点.js请求对象 - 返回响应正文以供进一步操作
- JavaScript/angular - 无法获取确切的返回响应数据
- 如何从 angularjs 服务中的异步调用返回响应
- 如何将返回响应的预定义 JavaScript 回调作为参数传递到函数中
- 为什么我的 XHR 调用等待对方返回响应
- XMLHttpRequest()在函数中返回响应
- Ajax请求在js检查后返回响应
- 执行javascript并返回响应(JavaFX/Swing)
- 在数组中填充$http/rest请求未返回响应的日期