4

是否可以在成功(回调)函数中获取请求的参数?

例如,

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

1 回答 1

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" );

$(this).attr('data') 将具有原始请求参数,您可以将其视为对象,所以

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

将是“json”。

于 2012-10-05T15:53:43.330 回答