2013-02-07 74 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

相关问题