在呼叫终止之前调用了AJAX Success

时间:2018-01-20 16:05:20

标签: javascript c# jquery ajax

我正在编写一个通过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:无法读取属性&#39;成功&#39;未定义的。

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

为什么在ajax调用之前终止成功方法的建议是什么?

谢谢, 丹

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

之所以被调用是因为你在这里包括括号:

success: processDeleteTownResult()

替换为:

success: processDeleteTownResult

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

(如评论中所示)