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 に答える