我正在编写一个通过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调用之前终止成功方法的建议是什么?
谢谢, 丹
答案 0 :(得分:2)
首先获取响应,然后您需要通过将此响应作为参数传递来调用您的函数: -
success: function(response){
processDeleteTownResult(response);
}
答案 1 :(得分:2)
之所以被调用是因为你在这里包括括号:
success: processDeleteTownResult()
替换为:
success: processDeleteTownResult
或
success: function(response){processDeleteTownResult(response);}
(如评论中所示)