MicrosoftMvcAjaxの非同期コールバック関数(onFailure,onSuccess)研究

3126 ワード

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) {
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    //
    /
    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() {
    //
    /
    if
    (
    this
    ._response) {
    return
    this
    ._response.get_responseData(); }
    else
    {
    return
    null
    ; } }, get_insertionMode:
    function
    Sys_Mvc_AjaxContext$get_insertionMode() {
    //
    /
    return
    this
    ._insertionMode; }, get_loadingElement:
    function
    Sys_Mvc_AjaxContext$get_loadingElement() {
    //
    /
    return
    this
    ._loadingElement; }, get_response:
    function
    Sys_Mvc_AjaxContext$get_response() {
    //
    /
    return
    this
    ._response; }, set_response:
    function
    Sys_Mvc_AjaxContext$set_response(value) {
    //
    /
    this
    ._response
    =
    value;
    return
    value; }, get_request:
    function
    Sys_Mvc_AjaxContext$get_request() {
    //
    /
    return
    this
    ._request; }, get_updateTarget:
    function
    Sys_Mvc_AjaxContext$get_updateTarget() {
    //
    /
    return
    this
    ._updateTarget; } }