2016-07-21 8 views
0

私はCordovaハイブリッドモバイルアプリケーションを開発中です。変数にデータをロードして処理するAPIを呼び出しています。以下は問題です。最初はAjaxコールが機能しませんが、その後は正常にコールされます

まず、私はAPIをajaxを使って呼び出します。 ajax呼び出しの後、jsonStringが空であるかどうかをチェックし、jsonStringが空の場合は、ページをリロードしてajax呼び出しを再度実行します。

$.ajax({ 
      url: GetConfigUrl // working URL, 
      type: 'POST', 
      data: { 
       token: '123456' 
      }, 
      cache: false, 
      datatype: 'json', 
      contenttype: "application/json",    
      success: function (data, response, xhr) { 
       debugger 
       jsonString = data.Value; 
      }, 
      error: function (data) { 
       // do nothing 
      ) 
     }); 

     if (jsonString == '') { 
      // Display popup to ask user the reload the page 
     } 

     return true; 

私は成功コール機能の代わりにデバッガを持っているが、それはヒットと直接jsonStringは、それがデータをロードするために、AJAXを呼び出し、に進んでいないため、空である、空であるかどうかを確認するために行っていませんポップアップを表示して、ユーザーにページの再読み込みを要求します。

ページリロード後、成功呼び出しのデバッガがヒットし、値を取得できます。したがって、jsonStringは空ではなく、処理を続行できます。最初の呼び出しが行われたようですが、常に保留中のまま enter image description here

私はコンソールの[ネットワーク]タブを確認し、それは以下の結果を示しています。 2番目の呼び出しは成功したもので、正しい値を返します。したがって、jsonString検査がパスされます。

この問題は、最初のajax呼び出しが成功せず、保留中ですが、その後のすべての呼び出しが成功したときに常に発生します。

ここで何が間違っていますか?どのようにして最初のajax呼び出しが正常に行われ、常にデータが返されるようにしますか?

答えて

2

AJAX呼び出しが

$.ajax({ 
      url: GetConfigUrl // working URL, 
      type: 'POST', 
      data: { 
       token: '123456' 
      }, 
      cache: false, 
      datatype: 'json', 
      contenttype: "application/json",    
      success: function (data, response, xhr) { 
       debugger 
       jsonString = data.Value; 
       if (jsonString == '') { 
       // Display popup to ask user the reload the page 
       } 

      }, 
      error: function (data) { 
       // do nothing 
      ) 
     }); 


     return true; 
を完了したときにそれが実行を取得するためのAjaxが成功機能で非同期な場所にあなたのロジックを実行します
関連する問題