0

最近、XAMPP を 1.8.1 から 1.8.3 にアップグレードしました。これには、php を 5.4 から 5.5 に、mySQL を 5.5 から 5.6 にアップグレードすることが含まれます。

アップグレード後、ajax ポーリング スクリプトが機能しません。コードは次のようになります。

  //define setInterval in global variable, to be cleared later      

  myInterval = setInterval(function(){ 

     //this alert works
     alert('inside interval');
     $.ajax({
           url: "../php/pollScript.php",
           dataType: "json",
           data: {action: 'get_count' },
           success: function(data){
               //never reaches this function, alert is not seen
               alert('success');
           },
           error: function (xhr, ajaxOptions, thrownError) {
               alert(xhr.status);
               alert(thrownError);
           }
     )};
  }, 2000);

 //use jquery ajax form to submit form that invokes long running php script
 $("form").submit();

 //interval is cleared in success function of ajax form submit

明らかに、setInterval 関数は機能していますが、ajax 関数は実行されていませ。セッションを解放するための長時間実行されるスクリプトでは、更新前にコードは変更されていません。何が起こっているのかについてのアイデアはありますか?ポーリングを許可するためにphp.iniで変更する必要がある構成はありますか?

更新:エラー ハンドラーを追加した後、エラー ステータスが 0 になりました。コードを変更していないため、なぜこれが発生するのかわかりません。これは、完了前に ajax リクエストがキャンセルされた結果である可能性があることを読みました....そして、そこにchrome dev tools->Networking タブの pollingScript.php はサーバーにヒットしません

長時間実行されるスクリプトも完全に機能します。

4

1 に答える 1

0

コメントでこれを明確に投稿できればいいのですが、ここに行きます。

次のように無限に便利なので、console.log()代わりに使用することを強くお勧めします。alert()

//define setInterval in global variable, to be cleared later      

myInterval = setInterval(function(){ 

 //this alert works
 alert('inside interval');
 $.ajax({
       url: "../php/pollScript.php",
       dataType: "json",
       data: {action: 'get_count' },
       success: function(data){
           //never reaches this function, alert is not seen
           console.log(data);
       },
       error: function (xhr, ajaxOptions, thrownError) {
           console.log(xhr.status);
           console.log(thrownError);
       }
  )};
}, 2000);

//use jquery ajax form to submit form that invokes long running php script
$("form").submit();

//interval is cleared in success function of ajax form submit

また、使用しているブラウザに関係なく、[ネットワーク] タブと親友になります。ページを更新するときは、このタブを開くことをお勧めします。

pollScript.phpページを更新したときにネットワークタブを見つけてクリックするだけです。

幸運を!

于 2013-09-17T19:17:19.743 に答える