这可能是一个简单的问题,但我不明白为什么会这样。这是简化的代码:
阿贾克斯调用:
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']);
为什么会这样?
更新:
我想我找到了问题所在。我所做的只是将“选项”一词更改为“测试”,将 php 更改为 print_r($_GET['test']),它工作正常。什么?