Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将对象发送到PHP_Javascript_Php_Jquery_Arrays_Ajax - Fatal编程技术网

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

我试图通过ajax将数据从客户端javascript发送到服务器php。 我有一个像这样的对象:

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中工作。