2009-05-21 16 views
5

Diciamo che ho una matrice di oggetti javascript, e sto cercando di passare quegli oggetti a una pagina php per salvarli in un database. Non ho problemi a passare una variabile al php e ad usare $ _POST ["entries"] su quella variabile, ma non riesco a capire come passare un'intera serie di oggetti, così posso accedere ai miei valori objects.entryId e .mediaType sulla pagina php.Come passare un array di oggetti javascript a php usando POST

Oh e prima che qualcuno chieda, sì, la ragione per cui ho bisogno di farlo in questo modo è perché ho un uploader flash, che hai indovinato .. carica in un server CDN (remoto) e il server remoto risponde solo con tali oggetti js.

Grazie per qualsiasi aiuto chiunque può fornire.

Ecco le mie funzioni 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"); 
     } 
     } 
    } 

risposta

3

forse avete bisogno di dare un'occhiata a JSON e metodi Ajax jQuery:

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

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

Il turorial è forse un po 'obsoleto perché l'ultima versione di jQuery è 1.3.x ma avrai un'idea su questo e sulle funzioni di json PHP ... se il tuo server non ha l'estensione JSON abilitato è possibile utilizzare alcune classi PHP:

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

buona fortuna!

+0

btw ... mi dispiace per i collegamenti! – coma

3

Anch'io ho avuto lo stesso problema. Ma googling aiuto di dint.

io ho cercato di modificare e di prova. E l'ho capito. Sto usando il metodo POST però. Si prega di provare l'idea con il metodo GET. Ecco l'idea:

Aggiunge il valore dell'indice dell'array tra parentesi quadre al nome della variabile Post/Get per l'array. Fallo per ogni elemento dell'array.

La parte var parameters="&Name[0]="+namevalue1+"&Name[1]="+namevalue2; del seguente script ti darà un suggerimento.

Questa è la prova JS, ho usato (metodo Anche in questo caso utilizza POST non 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; 
    } 

Questo ha funzionato per me. Ci scusiamo per la formattazione e il codice incompleto. Intendevo dare una direzione Google non ha dato la possibilità di dare una soluzione ai siti Web. Spero che tu lo trovi utile

+0

Spero che nessun altro utilizzi questo nel 2012 ... jQuery, prototipo, ecc. Possono farlo meglio ... – ncubica

Problemi correlati