Javascript 如何将对象发送到PHP
我试图通过ajax将数据从客户端javascript发送到服务器php。 我有一个像这样的对象:Javascript 如何将对象发送到PHP,javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,我试图通过ajax将数据从客户端javascript发送到服务器php。 我有一个像这样的对象: sinfo={ topic_title:title, topic_id: tid, section_name:section_name, section_id: fid, circuito: "fc", from_mid:mid, s
sinfo={
topic_title:title,
topic_id: tid,
section_name:section_name,
section_id: fid,
circuito: "fc",
from_mid:mid,
sito:site,
st: st,
tags:{"m4148305":{"post_id":987649,"from_id":1}}
}
我想把这个对象传递给服务器。
我知道的唯一方法是使用JQuery,所以我尝试了类似的方法:
$.post(baseurl+"/server/?act=post",sinfo,function(e)
{
sessionStorage.PixelTagSystemTagRequest="false";
});
它在Chrome和Safari上也能很好地工作。但是Firefox显示了一个奇怪的错误,比如:
调用事件。单击一个HTMLElement
没有实现接口
解决方案应该很简单:更新JQuery,不幸的是我不允许这样做。
所以我尝试了一个纯JS解决方案
var fd = new FormData(), lol, xml;
for(lol in sinfo)
{
fd.append(lol,sinfo[lol]);
//alert(lol+" = "+sinfo[lol]);
}
xml = new XMLHttpRequest();
xml.open("POST",baseurl+"/server/?act=post");
xml.onreadystatechange=function()
{
if(xml.readyState==4)
{
sessionStorage.PixelTagSystemTagRequest="false";
alert(xml.responseText);
}
};
xml.send(fd);
但是sinfo.tags仍然是一个对象,我不知道如何将该属性传递给服务器
注意:我试图避免在JSON中字符串化对象,因此我不必更改php代码。如果您想使用FormData,可以添加一些代码,如:
for(lol in sinfo)
{
if (lol == "tags") {
for (lok in sinfo[lol]) {
fd.append("tags[" + lok + "]", sinfo[lol][lok];
}
} else {
fd.append(lol,sinfo[lol]);
}
}
有没有一个特别的限制因素可以解释为什么你不能修改PHP代码?阅读这个问题就可以了。我试图避免在JSON中字符串化对象,因此我不必更改php代码。好的,我删除了JSON3,请使用该代码。它将在FormData中工作。