2013-10-27 79 views
0

我一直在嘗試幾個小時,不能確定我做錯了什麼,我確定它的東西簡單的即時消失,但任何幫助將是偉大的。Ajax請求不發送我的對象數據

我已經創建了一個動態填充的對象,這工作完美的問題是當我試圖通過ajax發送數據到一個php進程頁面時。

下面的代碼是我的循環獲取鍵和值的對象。

//build up dynamic datastring for ajax 
      var dataString = "" 
      dataString += "{"; 
      jQuery.each(obj,function(key, value) { 
       dataString += "'"+key+"':'"+value+"',"; 
      }); 
      //remove last , then add the containing bracket 
      dataString = dataString.slice(0,-1); 
      dataString += "};"; 
      console.log(dataString); 

       //do ajax 
       jQuery.ajax({ 
        url:'/builder/process-form.php', 
        type:'POST', 
        data:dataString 
       }).done(function(data){ 
        console.log(data); 
       }); 
      }); 

我已經寫了dataString VAR到控制檯,這是輸出 { '類型': 'tickbox', 'FNAME': '空', '值': '空', 'REQ' : '是的', 'valType': ''};這看起來適合數據參數的結構?如果我複製{'type':'tickbox','fname':'空','值':'空','請求' ':' 是的, 'valType': ''};數據後:行然後這個工程?

任何幫助,將不勝感激

非常感謝

伊恩

回答

1

也許我想念你的進程的東西,但你不需要建立一個「datastring」,看起來像一個對象,只是發送對象:

//do ajax 
    jQuery.ajax({ 
     url:'/builder/process-form.php', 
     type:'POST', 
     data:obj 
    }).done(function(data){ 
    console.log(data); 
}); 

然後,你就用$ _ POST對象屬性PHP方面。

+0

謝謝你的回覆,對不起我很笨! – Ian

1

這看起來結構合理的數據參數?

不是。您正在將源代碼構建爲JavaScript對象文字。你想爲data參數設置一個普通的JavaScript對象。

擺脫dataString和與之相關的一切。

data: obj 

如果你確實想在那樣的格式(而不是作爲標準格式的編碼數據)發送數據,然後使用JSON(這幾乎等同於你產生了什麼,但更嚴格報價規則),並可以用標準的函數生成:

var datastring = JSON.stringify(obj); 

如果你這樣做,但是,那麼你必須在請求頭中指定它:

data: datastring, 
contentType: "application/json", 

handle it differently on the PHP side

+0

謝謝你的回覆,對不起我很笨! – Ian