我正在尝试使用Ajax表单,每当我向任何AjaxOptions属性提供回调方法时,我都会收到此错误。
Microsoft JScript运行时错误:对象不支持此属性或方法
如果我没有为任何属性(OnSuccess,OnFailure,OnComplete或OnBegin)提供回调函数,则不会发生错误,并且表单会正确发布。
这是我的代码。
<% using (Ajax.BeginForm("someAction", "SomeController", new AjaxOptions() {
HttpMethod="POST",
UpdateTargetId = "feedbackMsg",
OnSuccess = "ShowConfirmationMessage"
}))
{ %>
我的javascript代码就是这个。
function ShowConfirmationMessage(xhr) {
alert(xhr);}
当我提供OnSuccess方法时,代码会像这样呈现。
<form action="/Review/SaveQualityScore"
method="post"
onclick="Sys.Mvc.AsyncForm.handleClick(this, new Sys.UI.DomEvent(event));"
onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event),
{
insertionMode: Sys.Mvc.InsertionMode.replace,
httpMethod: 'POST',
updateTargetId: 'feedbackMsg',
onSuccess: Function.createDelegate(this, ShowConfirmationMessage)
});"
>
我猜测Function.createDelegate是个问题。因为当我删除OnSuccess属性时,function.CreateDelegate不会被渲染,一切正常。
无论如何,我在这里疯了,任何帮助都会受到赞赏。谢谢!
答案 0 :(得分:4)
确保包含以下脚本:
答案 1 :(得分:2)
或者更好......如果您使用MVC 3,请务必包含jquery.unobtrusive-ajax.js。它会渲染出你的表单标签清理器。
此外,您可能不希望同时包含UpdateTargetId和OnSuccess。我花了3个小时搞清楚,如果我的控制器正在返回json,如果我在Ajax.BeginForm中定义UpdateTargetId,我的onsuccess javascript回调函数永远不会被命中。