0

これはおそらく単純な問題ですが、なぜこれが起こっているのかわかりません。削減されたコードは次のとおりです。

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']) に変更しただけで、問題なく動作します。え?

4

2 に答える 2