簡體   English   中英

為什么這個ajax請求失敗了?

[英]Why is this ajax request failing?

這可能是一個簡單的問題,但我不明白為什么會這樣。 這是簡化的代碼:

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']),它運行正常。 WTH?

嘗試

使用$_POST而不是$_GET

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

Ajax:

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);console.log(data); 看看你得到了什么。
  • 然后做聲明: if(data.length) if(data.sucess==='YeahDone') (JSON)無論如何..(通過PHP腳本檢查是否所有成功echo 'YeahDone';例如..
  • 所以做一些HTML或警報或其他什么

嘗試

 options

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

現在我明白為什么引用是一個好習慣:P

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM