2016-07-29 18 views
1

Ich habe ein Javascript-Array mit Werten wie "richtig", "falsch". Ich möchte dieses Array mit Ajax an meine PHP-Datei senden. Aber ich bin nicht vertraut mit wie. Dies ist, was ich bisher versucht habe .. und ich möchte dies ohne jquery tun.Senden Sie Javascript-Arrays über Ajax ohne jquery

var hold=[]; 
    for(t = 0;t <= 10; t++){ 
    answers_Arr = document.getElementsByName("question"+t); 
    for (k = 0; k < answers_Arr.length; k++){ 
     if(answers_Arr[k].checked){ 
      hold[t] = answers_Arr[k].value; 
      //document.getElementById("test"+t).innerHTML = "Value: "+ hold[t]; 
      break; 
     }else{ 
      hold[t] = "no"; 
      continue; 

     } 
    } 
} 
var jsonString = JSON.stringify(hold); 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("test1").innerHTML= xmlhttp.responseText; 
    } 
} 

xmlhttp.open("GET","result.php?res="+hold[],true); 
xmlhttp.send(); 

} 

Antwort

2

Hier ist ein Beispiel für die JSON-String mit POST durch AJAX Senden:

var jsonString = JSON.stringify(hold); 
var xmlhttp = new XMLHttpRequest(); 

xmlhttp.onreadystatechange = function() { 
    // 
} 

xmlhttp.open("POST","result.php",true); 
xmlhttp.setRequestHeader("Content-type", "application/json"); 
xmlhttp.send(jsonString); 

Vermeiden Sie das Senden json Strings mit GET-Methode, weil ich Wenn der Request-String zu lang wird, löst der Browser einen Fehler aus.

Jetzt in Ihrem PHP-Skript Sie alle Daten in $ _POST

bearbeiten haben: Sieht aus wie auf einigen Versionen von PHP, die Anforderungen, die andere Content-type haben, wie application/json, hat die $ _POST einen leeren Wert. Um das zu beheben, können Sie Folgendes tun:

$_POST = json_decode(file_get_contents('php://input')); 
+0

Vielen Dank. Kannst du mir mit dem PHP-Skript helfen, das auch zu holen? –

+0

Sie sollten alle Daten in $ _POST haben, wie Sie es über ein normales Formular senden würden. Wenn Sie nicht sicher sind, was die Variable enthält, können Sie den Inhalt immer mit 'print_r ($ _ POST) drucken;' – Ibrahim

+0

Ich versuchte mit print_r ($ _ POST); aber es druckt nur 'array()'. Das ist es. –

0

diese Zeile ersetzen

xmlhttp.open("GET","result.php?res="+hold[],true); 

mit

xmlhttp.open("GET","result.php?res="+jsonString,true); 
+0

es heißt immer noch undefined für 'res'. Und auch, wenn ich das Array in PHP anzeigen, zeigt es Null –

+0

Sie meinen, Sie sind undefiniert in Ihrem PHP-Skript? – atul

+0

Dies ist, was ich in meinem PHP-Skript verwendet habe, $ res = json_decode (stripslashes ($ _ GET ['res'])); echo json_encode ($ res); '** –