これはおそらく単純な問題ですが、なぜこれが起こっているのかわかりません。削減されたコードは次のとおりです。
Ajax 呼び出し:
mydata = {'action':'update','options':options};
console.log(mydata);
$.ajax({
url: 'dt/scripts/stoplight.php',
data: mydata
}).success(function(data){
if (data == 1) {
alert("Options Updated");
}else{
alert(data);
}
})
私のデータは次のようになります。
action
"update"
options
Object { OMS-S="0", OMS-N="0", OHS="0"}
明確にするために、これはブラウザ コンソールからのコピー アンド ペーストです。オブジェクトは有効なオブジェクトであり、次のように get 経由で渡されます。
https://*pathtomysite*/dt/scripts/stoplight.php?action=update&options%5BOMS-S%5D=0&options%5BOMS-N%5D=0&options%5BOHS%5D=0
このリクエストは無期限にハングします。
https://*pathtomysite*/dt/scripts/stoplight.php?action=update&options%5BOMS-S%5D=0&options%5BOMS-N%5D=0&options%5BOHS%5D=1
さらに明確にする。オプションは次のように生成されます。
$("#stoplight_apply").click(function(){
var radios = $("#stoplight_options").find("input:radio:checked");
options = {};
$.each(radios, function( key, value) {
options[value.name] = value.value;
});
set_stoplight_options(options);
})
これはうまくいきます。
これらのオプションのいずれかが 0 以外に設定されている場合、php スクリプトはうまく機能します! それらのすべてが 0 の場合、ハングして無期限にロードされます。
問題を引き起こす可能性のあるすべての PHP をコメントアウトしたので、現在、スクリプトは次のように動作します。
$action = $_GET['action']; //Get or update
print_r($_GET['action']);
print_r($_GET['options']);
なぜこうなった?
アップデート:
私は問題を見つけたと思います。「options」という単語を「test」に変更し、php を print_r($_GET['test']) に変更しただけで、問題なく動作します。え?