2012-10-05 55 views
3

是否有可能在成功(回調)函數中獲取請求的參數?jQuery - AJAX - 在成功函數中獲取請求的參數

例如,

function handleSubmitClick(evt) { 
    evt.preventDefault(); 

    var setupOptions = { 
     success: loadSearch, 
     type: "POST", 
     dataType: "json",    
     url: "../search.x", 
     error: handleError, 
     timeout: 10000 
    };     
    $("#searchForm").ajaxSubmit(setupOptions); 

    return false; 
} 

function loadSearch(data, statusText, xhr, $form) { 
    // here is where I would like to get the HTTP request 
    // parameters 
} 

當然,我可以handleSubmitClick期間存儲在一個全局變量的請求參數和讀取loadSearch變量。但是,如果用戶在第一個請求執行loadSearch之前提交另一個請求(並且我不想阻止用戶在第一個完成處理之前發出另一個請求),則該變量的值將被覆蓋。

我目前有服務器在響應數據中迴應請求參數,但我希望請求參數已經可用於客戶端,而服務器不必回顯請求參數。謝謝。

回答

4

這可能是你在找什麼,儘管它使用比當前解決方案是什麼樣不同的AJAX功能:

$.post(your_ajax_request_url, 
    { 
     success: loadSearch, 
     type: "POST", 
     dataType: "json",    
     url: "../search.x", 
     error: handleError, 
     timeout: 10000 
    }, function(response){ 

     console.log($(this).attr('data')); 

    }, "json"); 

$(本).attr(「數據」),將有原來的請求params,你可以把它當作一個物體,所以

$(this).attr('data')->dataType 

會是「json」。

+0

肖恩,謝謝你的回覆。我正在使用jQuery表單插件[鏈接](http://www.malsup.com/jquery/form/)。我想我可以應用你的閉包想法,並讓它與表單插件一起工作。我對此的想法越多,似乎對服務器來說最好是迴應這些參數。畢竟,它正在建立基於這些參數的響應。我歡迎你或他人的想法,但現在我似乎傾向於這樣。再次感謝您的回答。 – James

相關問題