由Ajax.ActionLink产生的html代码(mvc示例:ContantManager)如下:
代码
<a groupid="23" href="/Contact/Index/23" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'divContactList1', onBegin: Function.createDelegate(this, beginContactList), onFailure: Function.createDelegate(this, failureContactList), onSuccess: Function.createDelegate(this, successContactList) });"> private string </a>
当点击此链接,服务器执行成功调用onSuccess回调函数,执行失败调用onFailure回调函数。
onSuccess函数与onFailure函数的原型如下:
ajaxOptions.onSuccess(ajaxContext);
ajaxOptions.onFailure(ajaxContext);
这两个函数都有一个参数ajaxContext。
参数ajaxContext用法说明:
- 显示服务器返回内容: alert(ajaxContext.get_data());
- 服务器返回内容类型:alert(ajaxContext.get_response().getResponseHeader('Content-Type'));
参数ajaxContext代码如下:
文件MicrosoftMvcAjax.debug.js第33行
代码
//////////////////////////////////////////////////////////////////////////////// // Sys.Mvc.AjaxContext Sys.Mvc.AjaxContext = function Sys_Mvc_AjaxContext(request, updateTarget, loadingElement, insertionMode) { /// <param name="request" type="Sys.Net.WebRequest"> /// </param> /// <param name="updateTarget" type="Object" domElement="true"> /// </param> /// <param name="loadingElement" type="Object" domElement="true"> /// </param> /// <param name="insertionMode" type="Sys.Mvc.InsertionMode"> /// </param> /// <field name="_insertionMode" type="Sys.Mvc.InsertionMode"> /// </field> /// <field name="_loadingElement" type="Object" domElement="true"> /// </field> /// <field name="_response" type="Sys.Net.WebRequestExecutor"> /// </field> /// <field name="_request" type="Sys.Net.WebRequest"> /// </field> /// <field name="_updateTarget" type="Object" domElement="true"> /// </field> this._request = request; this._updateTarget = updateTarget; this._loadingElement = loadingElement; this._insertionMode = insertionMode; } Sys.Mvc.AjaxContext.prototype = { _insertionMode: 0, _loadingElement: null, _response: null, _request: null, _updateTarget: null, get_data: function Sys_Mvc_AjaxContext$get_data() { /// <value type="String"></value> if (this._response) { return this._response.get_responseData(); } else { return null; } }, get_insertionMode: function Sys_Mvc_AjaxContext$get_insertionMode() { /// <value type="Sys.Mvc.InsertionMode"></value> return this._insertionMode; }, get_loadingElement: function Sys_Mvc_AjaxContext$get_loadingElement() { /// <value type="Object" domElement="true"></value> return this._loadingElement; }, get_response: function Sys_Mvc_AjaxContext$get_response() { /// <value type="Sys.Net.WebRequestExecutor"></value> return this._response; }, set_response: function Sys_Mvc_AjaxContext$set_response(value) { /// <value type="Sys.Net.WebRequestExecutor"></value> this._response = value; return value; }, get_request: function Sys_Mvc_AjaxContext$get_request() { /// <value type="Sys.Net.WebRequest"></value> return this._request; }, get_updateTarget: function Sys_Mvc_AjaxContext$get_updateTarget() { /// <value type="Object" domElement="true"></value> return this._updateTarget; } }