2009-05-21 98 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

相關問題