2009-05-21 67 views
5

Cho phép nói rằng tôi có một mảng đối tượng javascript và tôi đang cố chuyển các đối tượng đó đến trang php để lưu chúng vào cơ sở dữ liệu. Tôi không gặp vấn đề gì khi chuyển một biến sang php và sử dụng $ _POST ["entries"] trên biến đó nhưng tôi không thể tìm ra cách vượt qua toàn bộ mảng đối tượng, vì vậy tôi có thể truy cập các giá trị objects.entryId và .mediaType của mình trên trang php. Oh và trước khi bất cứ ai hỏi, có lý do tôi cần làm theo cách này là bởi vì tôi có một trình tải lên flash, bạn đoán nó .. tải lên máy chủ CDN (từ xa) và máy chủ từ xa chỉ trả lời lại với các đối tượng js như vậy.Cách chuyển mảng đối tượng javascript sang php bằng cách sử dụng POST

Cảm ơn bạn đã giúp đỡ bất kỳ ai có thể cung cấp.

Đây là chức năng JS của tôi:

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

Trả lời

3

có lẽ bạn cần phải có một cái nhìn tại json và phương pháp ajax jQuery:

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

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

Các turorial có thể là một chút lỗi thời vì jQuery phiên bản cuối cùng là 1.3.x nhưng bạn sẽ nhận được một ý tưởng về điều đó và về các hàm json PHP ... nếu máy chủ không có phần mở rộng json kích hoạt bạn có thể sử dụng một số lớp học php:

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

chúc may mắn!

+0

btw ... xin lỗi về các liên kết! – coma

3

Tôi cũng gặp sự cố tương tự. Nhưng googling dint giúp đỡ.

Tôi đã cố gắng tinh chỉnh và thử nghiệm. Và tôi hiểu rồi. Tôi đang sử dụng phương thức POST. Hãy thử ý tưởng với phương pháp GET. Đây là ý tưởng:

Nối giá trị chỉ mục mảng trong dấu ngoặc vuông vào tên biến Post/Get cho mảng. Làm điều này cho mỗi phần tử mảng.

Phần var parameters="&Name[0]="+namevalue1+"&Name[1]="+namevalue2; của tập lệnh sau sẽ cung cấp cho bạn gợi ý.

Đây là thử nghiệm JS, tôi đã sử dụng (Again này sử dụng phương pháp POST không 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; 
    } 

này đã làm việc cho tôi. Xin lỗi vì định dạng và mã không hoàn chỉnh. Tôi định đưa ra một hướng. Google reault trang web không thể đưa ra một giải pháp. Hy vọng bạn thấy điều này hữu ích.

+0

Tôi hy vọng không có cơ thể nào khác đang sử dụng điều này vào năm 2012 ... jquery, prototype, etc có thể làm tốt hơn ... – ncubica

Các vấn đề liên quan