开发者问题收集

呼叫终止前调用 AJAX 成功

2018-01-20
55

我正在编写一个通过 jQuery 和 Ajax 删除城镇的方法。这是我的代码:

<button class="btn btn-danger btn-sm" onClick="deleteTown(@item.TownId)"><i class="fa fa-trash"></i></button></a>

删除城镇方法:

    function deleteTown(townId) {
    console.log(townId);
    $.ajax({
        type: "POST",
        url: "/Tenant/DeleteTownCritera",
        dataType: "json",
        async : false, 
        data: { Id: townId, TenantId: @Request.QueryString["tenantId"] },
        success: processDeleteTownResult()
    });
}

成功方法:

    function processDeleteTownResult(data) {
    console.log(data);

    if(data.Success == 1)
        {
        $("#town" + townId).remove();
    }
}

控制器:

    [HttpPost]
    public JsonResult DeleteTownCritera(CriteriaInput input)
    {
        TenantLogic logic = new TenantLogic();
        var x = logic.DeleteTownCritera(input);

        return Json(x, JsonRequestBehavior.AllowGet);
    }

发生了什么?

我在控制器上设置了一个断点。

本质上,我点击了名为 deleteTown 的按钮。

控制台记录城镇 ID。

控制台记录未定义。

控制台错误:未捕获 TypeError:无法读取未定义的属性“Success”。

然后使用正确的 TownId 和 TenantId 命中控制器。

对于为什么成功方法在 ajax 调用之前终止,您有什么建议吗?

谢谢, Dan

2个回答

之所以调用它,是因为您在此处添加了括号:

success: processDeleteTownResult()

替换为:

success: processDeleteTownResult

或者

success: function(response){processDeleteTownResult(response);}

(如评论中所建议)

Erresen
2018-01-20

首先获取响应,然后您需要通过传递此响应作为参数来调用您的函数:-

success: function(response){
  processDeleteTownResult(response);
}
Death-is-the-real-truth
2018-01-20