2012-11-19 42 views
1

我的數據看起來像這樣,它只是一個對象,其中包含兩個對象(每個對象都表示一個表單的數據)。如何通過POST提交數據對象,而不是ajax

Object {x__sf: Object, x__mx: Object} 
    x__mx: Object 
    country_id: "1" 
    input1: "" 
    input2: "" 
    ... 
    x__sf: Object 
    ... 

我想我必須在內存中創建一個臨時表單並提交它?我不確定一種安全的方式來循環訪問我的數據並向臨時表單添加隱藏字段。有這個功能嗎?還是更好的辦法?

我想要做到這一點,但實際上已經提交了頁面,因爲存在重定向邏輯serverside。

$.post('/whatever.php', data); 
+2

將其字符串化,然後在服務器端對其進行重新編碼。 – adeneo

+0

將它作爲臨時表單上的字段進行字符串化?好主意 –

+0

你可以使用$ .extend來擴展一個對象,或者你可以給對象添加一個新的屬性,然後使用任何方法漂浮你的船。 – adeneo

回答

3

但是,什麼是與下列問題進場?

服務器端:

<?php 
// do some stuff 
print "/redirect/to.php"; 
?> 

客戶端:

$.post("/whatever.php", data, function(data) { 
    location.href = data; 
}); 

甚至更​​先進:

服務器端:

<?php 
// do some stuff 
header("Content-Type: application/json"); 
print json_encode(array(
    "success" => "/redirect/to.php" 
)); 
?> 

客戶端:

$.post("/whatever.php", data, function(data) { 
    if (data.success) { 
     location.href = data.success; 
    } 
}, "json"); 
+2

+1,這是我會用的方法。至於非AJAX解決方案,但是,這個線程看起來像你想要的:http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit – sgroves

+0

@sgroves我不盡管如此,我認爲這個函數可以用於我的多維對象。 –

0

不要打擾循環....做這樣的事情:

$('form').submit(function() { 
    alert($(this).serialize()); 
    return false; 
}); 

或者在你的情況:

var data = $("#idOfForm").serialize(); 
+0

我沒有表單,只是一個json對象。使形式成爲問題。 –

+0

啊:)對不起:) – Brian

0

你只是想字符串化你的數據在發送前:

$.post('/whatever.php', JSON.stringify(data)); 

在服務器端,你需要使用PHP json_decode()功能:

json_decode(http_get_request_body());