0

这可能是一个简单的问题,但我不明白为什么会这样。这是简化的代码:

阿贾克斯调用:

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']),它工作正常。什么?

4

2 回答 2

2

尝试

$_POST不使用$_GET

$action = $_POST['action'];
print_r($_POST['action']);
print_r($_POST['options']);

阿贾克斯:

var mydata = {'action':'update','options':options};
$.ajax({
   type: 'POST',
   url: 'dt/scripts/stoplight.php',
   data: mydata,
   success: function(data){
       if(data.length) {
         alert('done')
       }            
   }
});
  • 请一一做(PHP -> JS -> HTML)
  • Ajax:发布一些数据并获取数据console.log(data);,看看你得到了什么。
  • 然后做声明:if(data.length) if(data.sucess==='YeahDone')(JSON)whatever..(echo 'YeahDone';例如,如果一切成功,请通过您的 PHP 脚本检查..
  • 所以用 HTML 或 alert 或其他东西做点什么
于 2013-09-03T12:41:31.940 回答
0

尝试

 options

  Object { "OMS-S":"0", "OMS-N":"0", "OHS":"0"}

现在我明白为什么引号是一个好习惯了:P

于 2013-09-03T13:07:05.807 回答