Je suis en train de passer un objet JavaScript à un script PHP par jquery.ajax()
, essentiellement:Pour JSON et json_decode en PHP et JavaScript
var bigArray = new Object();
//Dode
//Start loop
bigArray[x] = {name: exname, id: exID, order:e, set: setBox, inc: incBox, example: exampleBox, day: i};
Il est à peu près un tableau de ces objets.
var anotherTest = $.toJSON(bigArray);
var ajxFile = "routineajax.php";
$.ajax({
type: 'POST',
processData: false,
url: ajxFile,
data: anotherTest,
success: function(data) {
$('#result').html(data);
alert('Load was performed.');
}
});
});
Le script PHP côté
print_r($_POST);
$params = json_decode($_POST);
print_r($params)
L'appel Ajax traverse, et je peux voir dans Firebug, mais print_r($_POST)
retourne un tableau vide. Alors que si je le change à $_GET
à la fois la fonction $.ajax
et le script PHP cela fonctionne. Mon problème principal est que je reçois ce message d'erreur:
Attention: json_decode() attend le paramètre 1 à être une chaîne, un tableau donné dans
Comment puis-je résoudre ce problème?
Après avoir ajouté cet extrait dans le fichier PHP
$data = file_get_contents('php://input');
var_dump($data);
var_dump(json_decode($data));
Je reçois cette sortie
string'{"0"{"name":"Decline`Abs","id":"54","order":0,"set":"","inc":"","example":"","day":1}}' (length=87)`
object(stdClass)[2]
public '0' =>
object(stdClass)[4]
public 'name' => string 'Decline Abs' (length=11)
public 'id' => string '54' (length=2)
public 'order' => int 0
public 'set' => string '' (length=0)
public 'inc' => string '' (length=0)
public 'example' => string '' (length=0)
public 'day' => int 1
donc au moins ça va à travers, je ne sais pas comment accéder cependant, un pas dans la bonne direction!
Pouvez-vous éditer votre question avec les résultats de print_r ($ _ GET). Je vois que vous l'avez ci-dessous, mais ce n'est pas clair pour moi. – notJim