最近、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 はサーバーにヒットしません
長時間実行されるスクリプトも完全に機能します。