ASP.. NET - Ajax.BeginForm OnSuccess回调参数
本文关键字:OnSuccess 回调 参数 BeginForm Ajax NET ASP | 更新日期: 2023-09-27 18:13:45
我想添加更多的参数到我的OnSuccess回调(但保持ajax上下文变量)。
我所做的是:
using (Ajax.BeginForm("Register", new AjaxOptions() {
OnSuccess = "new function(arg){HandleBasicForm(arg , 'MyCustomVariable')}",
...
JS函数:
function HandleBasicForm(ajaxContext , myCustomVariable){
var content = ajaxContext.get_response().get_object();
....
}
但ajaxContext
为空
我怎么做呢?
既然你使用get_response()
,我猜你不使用不显眼的javascript的东西(在MVC3你已经设置了HtmlHelper.UnobtrusiveJavaScriptEnabled = false
),你引用MicrosoftAjax,js和MicrosoftMvcAjax.js文件。如果是这种情况,您只需要删除new
关键字。
using (Ajax.BeginForm("Register", new AjaxOptions() { OnSuccess = "function(arg){HandleBasicForm(arg , 'MyCustomVariable')}"})
如果你在jquery. unobtrusiu -ajax.js中使用MVC3不显眼的javascript支持,那么你可以使用隐式可用的xhr
和data
变量来代替。
using (Ajax.BeginForm("Register", new AjaxOptions() { OnSuccess = "HandleBasicForm(data, 'MyCustomVariable')"})
在你的处理程序中,没有必要使用get_response().get_object()
,因为反序列化的JSON数据将直接传递给你的处理程序。
function HandleBasicForm(data, myCustomVariable){
var someValue = data.someProperty; //work with data object returned
....
}
OnSuccess
从服务器接收data, status, xhr
:
OnSuccess = "myJsMethod(data, status, xhr)"
对应的JavaScript方法是:
function myJsMethod(data, status, xhr) {
}
现在你的控制器应该返回:
return Json(new { param1 = 1, param2 = 2, ... }, JsonRequestBehavior.AllowGet);
然后在myJsMethod
中,你可以访问data.param1
,等等