【发布时间】:2013-06-27 19:34:20
【问题描述】:
当我将参数发布到服务器时,jQuery的加载的回调函数没有执行。
这会导致服务器错误,但回调函数会执行:
chassisLookupDialog.load('../Workflow/FindChassisDialog/', function (response, status, xhr) {
console.log("Response", response, status, xhr);
chassisLookupDialog.open();
});
这行得通,参数到达服务器并且没有抛出错误,但回调函数永远不会执行:
chassisLookupDialog.load('../Workflow/FindChassisDialog/', {
dataCenterID: dataCenterID,
bladeTemplateID: bladeTemplateID,
selectedChassisID: selectedChassisID,
selectedSlotNumber: selectedSlotNumber
}, function (response, status, xhr) {
console.log("Response", response, status, xhr);
chassisLookupDialog.open();
});
这是我的控制器:
public ActionResult FindChassisDialog(int dataCenterID, int bladeTemplateID, int selectedChassisID, int selectedSlotNumber)
{
FindChassisDialogModel findChassisDialogModel = new FindChassisDialogModel();
return View("FindChassisDialog", findChassisDialogModel);
}
如果我检查服务器的响应,我会发现所有 HTML 格式正确。不知道为什么我的回调不会执行...有什么想法吗?
这会以视图的 html 作为错误数据调用错误事件:
$.ajax({
type: 'POST',
dataType: 'json',
url: '../Workflow/FindChassisDialog/',
data: {
dataCenterID: dataCenterID,
bladeTemplateID: bladeTemplateID,
selectedChassisID: selectedChassisID,
selectedSlotNumber: selectedSlotNumber
},
success: function (data) {
console.log("Success:", data);
},
error: function (error) {
console.error("Error:", error);
}
});
【问题讨论】:
-
提供参数时,
load方法以post发送请求,当参数不存在时,load以get方法发送请求。可能是您的服务器无法处理post方法。 -
是的,同意,只是不太确定如何/为什么。我看到响应成功返回,没有错误或请求失败。我只是看到它返回视图,然后从未点击回调。我还有其他工作示例,其中我发送了 1 个参数,并且效果很好。我还没有发现差异。
-
尝试使用
$.ajax的complete和success/error事件 -
将我的 ajax 请求编辑到帖子中。使用 responseText 作为视图的 HTML 调用“错误”。
-
尝试在请求中添加
dataType : html。另外,检查errorText。error回调有 3 个参数( jqXHR jqXHR, String textStatus, String errorThrown )
标签: jquery asp.net-mvc-3 callback load