2016-07-04 9 views
0

ajax呼び出しを行うjavascriptコードがあります。これはvarを取得し、後でスクリプトでvarを使用しようとします。問題は、ajax呼び出しのため、コードの残りの部分が実行されてからvarがあることです。私は単純に、アラートに追加すると、物事はうまく動作:コードが続行される前にAjaxによって返されたvarが必要です

var quote_request_id; 
    $.ajax({ 
      type: "POST", 
      url: rate_url + '/99/1', 
      data: datastring, 
      dataType: "html" 
    }).done(function(data,status,xhr) { 
     quote_request_id = xhr.getResponseHeader('X-QuoteRequest-Id'); 
    }); 

私はその後、quote_request_idのVARを使用して他のAJAX呼び出しを持っていますが、それが設定されていません。上記のコードブロックの後に警告を追加するだけで動作します。私は、それがajax呼び出しの非同期動作のためだと認識しています。 varを取得し、それをコードの残りの部分で使用する方法を理解する必要があります。

+1

あなたが必要と考えるものと実際に必要なものは、2つの異なるものです。実際に必要なのは、サーバーから引用要求IDを取得する非同期性を考慮してコードをリファクタリングすることです。 – Adam

答えて

0

AJAXが必要ない場合は、代わりにSJAXが必要です。これは同期通信です。あなたのajaxオブジェクトにasync: falseを追加してください。 しかし、successメソッドか、最初のdoneメソッドから、その後のajax呼び出しを起動して、変数を持つようにすることをお勧めします。

+1

これを行うことは非常に悪いことであり、コンソールにブラウザの警告が表示されることになります。より良い解決策は、非同期の原則に従うようにコードをリファクタリングすることです。 –

関連する問題