我如何 return 来自 jQuery.steps 的 AJAX 调用的结果?
How do I return the result of an AJAX call from jQuery.steps?
我知道一个非常相似的问题是 ,但那里的答案对我不起作用。我不知道我是否做错了什么,或者在过去 18 个月中 jQuery 或 jQuery.steps 是否发生了变化。
在 onStepChanging
方法中,我有以下代码(为清楚起见,省略了检查我们正在进行的步骤等的代码)...
$.ajax({
url: '/Home/ValidatePostcode',
type: "GET",
data: {
postcode: postcode
},
success: function (result) {
if (result) {
return true;
} else {
return false;
}
}
});
但是,这不起作用。 onStepChanging
方法 returns 在 AJAX 调用之前执行,因此忽略 success
回调中的 return
语句。根据链接 post 中的答案,这应该有效。
并不是说我想同步执行此操作,而是我尝试将 async: false
添加到 AJAX 调用中,但没有任何区别。
任何人知道我如何让它工作吗?我正在使用 jQuery.steps v1.0.1(今天下午下载,所以他是最新版本)和 jQuery v1.12.3.
我觉得你很接近。
关键是您尝试的 "async: false",但是 "return true;" 和 "return false;" 来自 ajax 成功方法只是 return ajax 打电话。
true/false 值与调用堆栈上层的原始 onStepChanging 方法无关。
- 在 ajax 调用之前创建一个变量,比如 "var response = false;"
- 然后将 async: false 添加到 ajax 调用
- 然后在您的成功方法中设置 response = true;
- 然后在 onStepChanging 方法中返回 return 响应变量。
"return response;"
加在一起可能看起来像这样:
onStepChanging: function (...)
{
var response = false;
$.ajax({
url: '/Home/ValidatePostcode',
type: "GET",
async: false,
data: {
postcode: postcode
},
success: function (result) {
if (result) {
response = true;
}
}
});
return response;
}
应该可以。
我知道一个非常相似的问题是
在 onStepChanging
方法中,我有以下代码(为清楚起见,省略了检查我们正在进行的步骤等的代码)...
$.ajax({
url: '/Home/ValidatePostcode',
type: "GET",
data: {
postcode: postcode
},
success: function (result) {
if (result) {
return true;
} else {
return false;
}
}
});
但是,这不起作用。 onStepChanging
方法 returns 在 AJAX 调用之前执行,因此忽略 success
回调中的 return
语句。根据链接 post 中的答案,这应该有效。
并不是说我想同步执行此操作,而是我尝试将 async: false
添加到 AJAX 调用中,但没有任何区别。
任何人知道我如何让它工作吗?我正在使用 jQuery.steps v1.0.1(今天下午下载,所以他是最新版本)和 jQuery v1.12.3.
我觉得你很接近。
关键是您尝试的 "async: false",但是 "return true;" 和 "return false;" 来自 ajax 成功方法只是 return ajax 打电话。 true/false 值与调用堆栈上层的原始 onStepChanging 方法无关。
- 在 ajax 调用之前创建一个变量,比如 "var response = false;"
- 然后将 async: false 添加到 ajax 调用
- 然后在您的成功方法中设置 response = true;
- 然后在 onStepChanging 方法中返回 return 响应变量。 "return response;"
加在一起可能看起来像这样:
onStepChanging: function (...)
{
var response = false;
$.ajax({
url: '/Home/ValidatePostcode',
type: "GET",
async: false,
data: {
postcode: postcode
},
success: function (result) {
if (result) {
response = true;
}
}
});
return response;
}
应该可以。