2017-10-16 4 views
0

Mit der alten Methode $ .ajax I-Arrays und normale Daten wie so senden würde:XMLHttpRequest - Senden Arrays von _POST

var dataARR = { 
    byteValue: 1, 
    data: [] 
}; 

Hinweis data ist ein Array.

dataARR.data.push({Username: "wazo", Info: "wazoinfo"}); 
dataARR.data.push({Username: "bifo", Info: "bifoinfo"}); 

Dann ist es immer bereit, und Senden:

var dataJSON = JSON.stringify(dataARR); 
$.ajax({ 
    type: "POST", // This for array 
    url: "login.php", 
    cache: false, 
    data: { myJson: dataJSON }, 
    success: function (data) { 
     // Do stuff here 
    } 
}); 

Im PHP-Code würde ich folgendes dann tun:

$dataTotal = json_decode($post['myJson'], true); 
$Username0 = $dataTotal['data'][0]['Username']; 
$Info0 = $dataTotal['data'][0]['Info']); 
$Username1 = $dataTotal['data'][1]['Username']; 
$Info1 = $dataTotal['data'][1]['Info']); 

Alles, was gut funktioniert.

aber jetzt bin ich Umstellung auf XMLHttpRequest:

var url = "login.php"; 
var method = "POST"; 
var xhr = new XMLHttpRequest(); 
if ("withCredentials" in xhr) { 
    // XHR for Chrome/Firefox/Opera/Safari. 
    xhr.open(method, url, true); 
} else if (typeof XDomainRequest != "undefined") { 
    // XDomainRequest for IE. 
    xhr = new XDomainRequest(); 
    xhr.open(method, url); 
} else { 
    // CORS not supported. 
    xhr = null; 
} 

if (!xhr) { 
    return; 
} 
// Response handlers. 
xhr.onload = function (data) { 
    // Do stuff 
}; 

und die wichtigen Bit

var dataJSON = JSON.stringify(dataARR); 
xhr.send({ myJson: dataJSON }); 

Aber jetzt ist die $_POST['myJson'] existiert nicht

Wenn ich eine echo print_r($_POST); tun, es gibt Array()1

zurück

Frage: Was muss ich senden xhr.send(????);, um es zu bekommen, damit ich die Arrays in PHP wieder lesen kann?

Antwort

0

Mit XMLHttpRequest greifen Sie auf die Daten anders zu.

Im javascript:

var dataJSON = JSON.stringify(dataARR); 
xhr.send(dataJSON); 

Im php:

$dataTotal = json_decode(file_get_contents("php://input"), true); 
$Username0 = $dataTotal['data'][0]['Username']; 
$Info0 = $dataTotal['data'][0]['Info']); 
$Username1 = $dataTotal['data'][1]['Username']; 
$Info1 = $dataTotal['data'][1]['Info']);