2013-02-07 75 views
0

我必須解析我的html並將其發佈到另一個腳本。當我使用JSON.stringify序列化對象與解析的數據,在接收腳本$ _POST數組爲空:將JavaScript對象轉換爲JSON並將其張貼

$("#addQueryForm").submit(function(event){ 
    event.preventDefault(); 
    result = {}  
    result['kindArr']; 
    result['factor']; 
    $("[rel=my-form]").each(function() { 
    result[$(this).attr("name")] = $(this).attr("value"); 
    }); 
    var form = JSON.stringify(result);  
    $.post("add_kind.php", form , function(data) { 
    alert(data); 
    //data shows me that $_POST array is empty 
    }); 
}); 

但是如果我手動編寫JSON字符串查詢,這將是正確的:

$.post("add_kind.php", {"kind":"Var1","kindArr":"Var12345","factor":"Var0","synonym1":"Var1","synonym2":"Var2","synonym3":"Var3"} , function(data) { 
    alert(data); 
    //data shows me that $_POST contains posted data 
}); 

我在做什麼錯?

P.S:stringify過量。

+0

可以使用$(「#形式」)序列化() –

+2

你的第二個版本是不是一個JSON字符串,它是一個Javascript對象。 jQuery將其轉換爲www-form-urlencoded格式,而不是JSON。 – Barmar

+0

您不需要對結果進行字符串化處理,jQuery將爲您正確處理所有內容。所以交'result'應該可以。但是,字符串也可以工作,因此可能會出現錯誤。 '(「[rel = my-form]」)是否會產生所需的結果集? – Christoph

回答

2

也許serialize將在您的情況更好。

var form = $(this).serialize();  
$.post("add_kind.php", form, function(data) { 
    alert(data); 
}); 
+0

不,我在頁面加載和'form = $(this).serialize(); '拿不到他們,不是嗎? – Paul

+1

如果它們是你的表單的一部分 - serialize也會得到它們。 – dfsq

相關問題