2012-10-05 53 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