jquery - 返回 false 和 e.stopImmediatePropagation 似乎不起作用
问题描述
我在 jQuery 中有以下代码。我有 e.stopImmediatePropagation() 并返回 false 以便代码不会继续执行 POST 的位置。如何防止代码继续?
$("#saveBtn").on("click", function (e) {
var obj = { name: $("#sName").val() };
$.ajax({
url: '@Url.Action("CheckExist", "PMP")',
type: "GET",
async: true,
data: obj,
success: function (data) {
if (data != null) {
if (data == 'True')
{
alert('HERE');
e.stopImmediatePropagation();
return false;
}
}
}
});
// I WANT THE CODE TO NOT DO THE POST IF data == 'True' but it seems to continue regardless of return false
$.ajax({
type: "POST",
url: data_appRootPath + "@Url.PMPActionUrl((object)@ViewBag.Org_ID,
"GetType", null, null, null)",
contentType: false,
解决方案
您所做的是两个异步操作。这意味着两个 ajax 请求同时被触发(并行)。当来自 ajax 请求的响应回来时,取消第二个 ajax 请求已经晚了。
如果您希望发生这种情况,您需要在第一个请求的回调中触发第二个请求。
所以,这样的事情:
$("#saveBtn").on("click", function (e) {
var obj = { name: $("#sName").val() };
$.ajax({
url: '@Url.Action("CheckExist", "PMP")',
type: "GET",
async: true,
data: obj,
success: function (data) {
if (data != null) {
if (data == 'True')
{
// I WANT THE CODE TO NOT DO THE POST IF data == 'True' but it seems to continue regardless of return false
$.ajax({
type: "POST",
url: data_appRootPath + "@Url.PMPActionUrl((object)@ViewBag.Org_ID,
"GetType", null, null, null)",
contentType: false,
}
}
}
});
推荐阅读
- swift - AudioPlayer (Swift) - 两次播放声音 - 有间隙
- php - 我应该如何从我的复选框中创建一个数组?
- google-assistant-sdk - 是否可以将 Google 助理与我的自定义应用程序集成?
- c++ - 使用 C++ 和 Objective-C 代码将 C++ 库与库链接起来
- python - 用另一个 Python 的值填充一列的 nan
- python - 访问相同的键:python中字典列表中的值对
- python - numpy中两个二维掩码数组的快速内积
- dart - 在进入应用程序之前检查用户是否使用 firebase 登录
- reactjs - React:在可折叠表格中显示分层 JSON 数据
- google-cloud-platform - 数据流:有状态处理性能注意事项