2016-10-31 11 views
0

ajaxリクエストまたは.load()リクエストのいずれかを使用して、同じdiv(.content)に異なるコンテンツを読み込むWebアプリケーションがあります。ajaxクエリの実行中にjQuery .loadが機能しない

AJAXリクエストの簡易版である:私は別のボタンに

$(document).on('click', '.button1', function() { 
     $.ajax({ 
     type: "POST", 
     url: "/path/to/file/ajax.php", 
     data: { 
      'param1': 'xyz', 
      'param2': '123',  
     }, 
     timeout: 10000, 
     dataType: "json", 
     success: function(data) { 
      if (data.status == 'Success') { 
       $('.content').html(data.result); 
      } else if (data.status == 'Error'){ 
       console.log('Something went wrong') 
      } 
     }, 
     error: function(x, status, error) { 
      if (status === "timeout") { 
       console.log('Request Timed Out'); 
      } 
     }, 
     }); 
    }); 

$(document).on('click', '.button2', function() { 
      $('.content').load('/path/to/file/getContent.php?ref=foo'); 
    }); 

問題は、私はボタン1をクリックした場合ということで、その後ながら、ボタン2をクリックしてくださいajaxリクエストはまだ実行中ですが、何も起こりません。 (つまり、getContent.phpは15〜30秒の間何も返さないようです)

ボタン2をクリックするとすぐに結果が返されますが、button1をクリックしてajaxリクエストを処理するとすぐにそれが完了するまで(またはエラー)、ウェブアプリ全体を「停止」するようです。

(私はまた、abort()メソッドを使ってajaxリクエストをキャンセルしようとしましたが、アボートが成功した場合でも同じ問題が続く)。 @adeneoから先端に続き

+0

これはおそらくフロントエンドではなく、問題のサーバーです。 PHPは、同じセッション変数などを使用して複数のリクエストに問題がある場合があります。 – adeneo

+0

@adeneo返信ありがとうございます - ajax.phpとgetContent.phpからsession_start()を削除しました(main.phpページ)それは問題を修正したようだ!アップデートを投稿する前にもう少しテストをします。 – JS77

答えて

0

以下

UPDATE を参照してください溶液/回答、私はこの記事に私を導いたのsession_startとAjax呼び出しにいくつかのより多くの研究をしました:

http://konrness.com/php5/how-to-prevent-blocking-php-requests/

問題は、複数のajax要求でバッ​​クエンドの問題を引き起こすセッションファイルをロックするsession_startと絶対に関係していました。上記の記事のアドバイスに従って、私はPHPでsession_write_close()を使用しました。これは、セッション変数が読みやすくなりませんが、もはやAJAX要求の遅延を引き起こしてセッションファイルをロックし

if (session_status() == PHP_SESSION_NONE) { 
     session_start(); 
     session_write_close(); 
    } 

:それは他の誰かを助けている場合

は、私が実際に)のsession_start(から私のコードを変更しました。 (また、session_start()がまだ呼び出されていないことを確認します)

関連する問題