2015-11-23 75 views
1

所以我看起來像這樣的對象,可以說這就是所謂的obj追加的對象序列化表單數據

var obj = [{ 
    "cella": "test1", 
    "cellb": "test2 ", 
    "cell3": "test3" 
}] 

現在我想和序列化格式數據一起發佈此使用AJAX一個PHP控制器。我遇到的問題是如何實際傳遞數據。我曾嘗試:

{ 
    "json object": obj 
} 

和:

data: "json object=" + obj + $("#form").serialize(), 

但是我無法張貼在兩個表格數據和對象以正確的格式。我應該尋找將表單數據添加到對象嗎?

回答

2

您可以使用$.param將對象(請注意,它與JSON無關)與$.ajax請求的data屬性以及序列化表單數據一起提供。試試這個:

var obj = [{ 
    "cella": "test1", 
    "cellb": "test2 ", 
    "cell3": "test3" 
}] 

$.ajax({ 
    url: 'your-php-page.php', 
    type: 'POST', 
    data: $('#form').serialize() + '&' + $.param(obj[0]), 
    success: function(returnedData) { 
     console.log('it worked'); 
    }, 
    error: function(xhr, status, error) { 
     console.log('it didnt work, you can check the passed in parameter to debug'); 
    } 
}); 

Working demo

注意,演示顯示了參數化對象追加到序列化格式的輸出。

注意,對於對象的數組,你需要遍歷它們,附加到序列化形式在每次迭代,這樣的事情:

function buildQuerystring() { 
    var qs = $('#form').serialize(); 
    for (var i = 0; i < obj.length; i++) { 
     qs += '&' + $.param(obj[i]); 
    } 
} 

// in the $.ajax call: 
data: buildQuerystring(), 
+0

,如果它是對象的數組,如何將這項工作?例如'[{「cella」:「test2 1」,「cellb」:「1」,「cellc」:「1」},{「cella」:「test1」,「cellb」:「1」 :「1」}]' – rob

+0

您需要遍歷數組,併爲每個迭代追加'$ .param(obj [n])'字符串。 –

+0

我爲你更新了我的答案。 –