2009-05-21 81 views
5

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

哦,之前有人问,是我需要这样做的原因是因为我有一个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"); 
     } 
     } 
    } 

回答

3

也许你需要看看JSON和jQuery AJAX方法:

.- http://blog.reindel.com/2007/10/02/parse-json-with-jquery-and-javascript/

.- http://us.php.net/json_decode

的由于jQuery的最新版本是1.3.x,所以你可能会有些过时,但你会对PHP和json的功能有所了解......如果你的服务器不具备JSON扩展使您可以使用一些PHP类:

.- http://google.com.co/search?rlz=1C1GPEA_enVE314VE314&sourceid=chrome&ie=UTF-8&q=php+json+class

好运!

+0

btw ...抱歉的链接! – coma 2009-05-21 03:59:28

3

我也有同样的麻烦。但谷歌搜索帮助。

我试图自己调整和测试。我懂了。虽然我使用POST方法。请尝试使用GET方法。这里的想法是:

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

以下脚本的部分var parameters="&Name[0]="+namevalue1+"&Name[1]="+namevalue2;会给你一个提示。

这是JS,我使用的测试(这同样采用POST方法不GET):

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; 
    } 

这为我工作。对不起格式和不完整的代码。我打算给一个方向。 Google reault网站无法提供解决方案。希望您觉得这个有帮助。

+0

我希望没有其他人在2012年使用这个... jquery,原型等可以做得更好... – ncubica 2012-11-16 15:30:23

相关问题