POST kullanarak php için bir javascript nesne dizisi geçmek için nasıl

2 Cevap php

Javascript nesneleri bir dizi var, ve ben bir veritabanına kaydetmek için bir php sayfası bu nesneleri geçmek için çalışıyorum diyelim. Ben hiçbir sorun php bir değişken geçen ve $ _POST bu değişkene ["kayıtlar"] kullanarak var ama nesnelerin tüm dizisi geçirmek için nasıl bilemiyorum, bu yüzden benim objects.entryId ve. MediaType değerleri erişebilirsiniz php sayfada.

Soran önce (uzaktan) bir CDN sunucusuna .. yüklenenler tahmin ki, bir flaş yükleyicisi ve uzak sunucu sadece bu js nesnelerle birlikte geri cevap çünkü Oh ve, evet ben bunu bu şekilde yapmak gerekiyor nedenidir.

Herhangi için teşekkürler herkes sağlayabilir yardımcı olur.

İşte benim JS fonksiyonları:

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

2 Cevap

belki json ve jQuery ajax yöntemleri bakmak gerekir:

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

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

JQuery son sürümü 1.3.x ama sunucu json uzantısı bazı php sınıfları kullanabilirsiniz etkin yoksa sen ... o ve PHP json fonksiyonları hakkında bir fikir alırsınız çünkü turorial belki biraz modası geçmiş:

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

iyi şanslar!

Ben de aynı sorun vardı. Ama kuvvetiyle yardım Googling.

Ben oynamak ve test etmek için kendim denedim. Ve ben hallederim. I POST yöntem olsa da kullanıyorum. GET yöntemi ile fikir deneyin. İşte fikir:

Dizi için Post / Get değişken adı köşeli parantez içinde dizi dizin değerini ekleyin. Her dizi elemanı için bunu yapın.

var parameters="&Name[0]="+namevalue1+"&Name[1]="+namevalue2; aşağıdaki script kısmı size bir ipucu verecek.

Bu benim kullanılan deney JS olan (Yine bu kullanır POST yöntem değildir 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;
    }   

Bu benim için çalıştı. Biçimlendirme ve eksik kod için özür dilerim. Ben bir yön vermek anlamına geliyordu. Google Reault web siteleri bir çözüm veremiyordum. Bu yararlı bulacağını umuyorum.