Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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
如何使用POST将javascript对象数组传递给php_Php_Javascript_Ajax - Fatal编程技术网

如何使用POST将javascript对象数组传递给php

如何使用POST将javascript对象数组传递给php,php,javascript,ajax,Php,Javascript,Ajax,假设我有一个javascript对象数组,我正试图将这些对象传递到php页面以将它们保存到数据库中。我将变量传递给php并在该变量上使用$_POST[“entries”]没有问题,但我不知道如何传递整个对象数组,因此我可以访问php页面上的objects.entryId和.mediaType值 哦,在别人问之前,是的,我之所以要这样做是因为我有一个flash上传程序,你猜到了。。上传到CDN服务器(远程),远程服务器仅回复此类js对象 谢谢任何人能提供的帮助 以下是我的JS函数: functio

假设我有一个javascript对象数组,我正试图将这些对象传递到php页面以将它们保存到数据库中。我将变量传递给php并在该变量上使用$_POST[“entries”]没有问题,但我不知道如何传递整个对象数组,因此我可以访问php页面上的objects.entryId和.mediaType值

哦,在别人问之前,是的,我之所以要这样做是因为我有一个flash上传程序,你猜到了。。上传到CDN服务器(远程),远程服务器仅回复此类js对象

谢谢任何人能提供的帮助

以下是我的JS函数:

function test() {
        entriesObj1 = new Object();
        entriesObj1.entryId = "abc";
        entriesObj1.mediaType = 2;
        entriesObj2 = new Object();
        entriesObj2.entryId = "def";
        entriesObj2.mediaType = 1;

        var entries = new Array();

        entries[0] = entriesObj1;
        entries[1] = entriesObj2;
        var parameterString;

        for(var i = 0; i < entries.length; i++) {
            parameterString += (i > 0 ? "&" : "")
              + "test" + "="
              + encodeURI(entries[i].entryId);
        }

        xmlhttp.open("POST","ajax_entries.php",true);

        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.setRequestHeader("Content-length", parameterString.length);
        xmlhttp.setRequestHeader("Connection", "close");

        xmlhttp.onreadystatechange  = handleServerResponseTest;
        xmlhttp.send(parameterString);
    }
    function handleServerResponseTest() {
       if (xmlhttp.readyState == 4) {
         if(xmlhttp.status == 200) {
        alert(xmlhttp.responseText);
         }
         else {
            alert("Error during AJAX call. Please try again");
         }
       }
    }
功能测试(){
entriesObj1=新对象();
entriesObj1.entryId=“abc”;
entriesObj1.mediaType=2;
entriesObj2=新对象();
entriesObj2.entryId=“def”;
entriesObj2.mediaType=1;
var entries=新数组();
条目[0]=entriesObj1;
分录[1]=entriesObj2;
var参数字符串;
对于(变量i=0;i0?&“:”)
+“测试”+“=”
+encodeURI(条目[i].entryId);
}
open(“POST”,“ajax_entries.php”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
setRequestHeader(“Content-length”,parameterString.length);
setRequestHeader(“连接”,“关闭”);
xmlhttp.onreadystatechange=handleServerResponseTest;
send(参数字符串);
}
函数handleServerResponseTest(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
警报(xmlhttp.responseText);
}
否则{
警报(“AJAX调用期间出错,请重试”);
}
}
}

也许您需要看看json和jQuery ajax方法:

.-

.-

该教程可能有点过时,因为jQuery的最新版本是1.3.x,但您将了解这一点以及PHP json函数。。。如果您的服务器未启用json扩展,则可以使用一些php类:

.-


祝你好运

我也有同样的问题。但是谷歌搜索力没有帮助

我试着自己调整和测试。我明白了。不过我使用的是
POST
方法。请尝试使用
GET
方法。以下是想法:

将方括号内的数组索引值附加到数组的Post/Get变量名。对每个数组元素执行此操作

部分
var参数=“&Name[0]=”+namevalue1+”&Name[1]=”+namevalue2将给您一个提示

这是我使用的测试JS(再次使用
POST
方法而不是
GET
):


这对我有用。很抱歉,格式和代码不完整。我想给你一个方向。Google reault网站无法给出解决方案。希望你觉得这很有用。

顺便说一句。。。很抱歉链接!我希望2012年没有其他人使用这个。。。jquery、prototype等可以做得更好。。。
    var xmlAJAXObject;

    function test() {
        xmlAJAXObject=GetxmlAJAXObject();
        if (xmlAJAXObject==null)    {
          alert ("Oops!! Browser does not support HTTP Request.");
          return  false;
        }
        var namevalue1=encodeURIComponent("Element 1");
        var namevalue2=encodeURIComponent("Element 1");

        var parameters="&Name[0]="+namevalue1+"&Name[1]="+namevalue2;

        xmlAJAXObject.open("POST", "test.php", true);   
        xmlAJAXObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlAJAXObject.setRequestHeader("Content-length", parameters.length);

        xmlAJAXObject.onreadystatechange=stateChanged;

        xmlAJAXObject.send(parameters);

    }

    function stateChanged() {

        if (xmlAJAXObject.readyState ==4)   {
            if (xmlAJAXObject.status == 200) {
                alert('Good Request is back');
                document.getElementById("show").innerHTML=xmlAJAXObject.responseText;
            }
        }
    }

    function GetxmlAJAXObject() {
        if (window.XMLHttpRequest)  {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            return new XMLHttpRequest();
        }
        if (window.ActiveXObject)  {
          // code for IE6, IE5
            return new ActiveXObject("Microsoft.Microsoft.XMLHTTP");
        }
        return null;
    }