web-dev-qa-db-fra.com

Envoi d'un objet Javascript à PHP via Ajax

J'apprends l'Ajax par échec et j'ai heurté un mur:

J'ai un tableau (si cela est important, le tableau stocke les identifiants numériques en fonction des cases à cocher que l'utilisateur vérifie) qui est écrit en Javascript.

J'ai une fonction qui est appelée lorsque l'utilisateur clique sur le bouton "enregistrer". La fonction est la suivante:

function createAmenities() {
    if (window.XMLHttpRequest) {
        //code for IE7+, Firefox, Chrome and Opera
        xmlhttp = new XMLHttpRequest();
    }
    else {
        //code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById('message').innerHTML = xmlhttp.responseText;
        }
    }

    var url = "create_amenities.php";

    xmlhttp.open("GET", url, true);

    xmlhttp.send();

}

Ma question est: Que puis-je mettre dans cette fonction pour tirer le tableau dans le script php que j'essaie d'appeler ('create_amenities.php')?

en outre, dois-je essayer d'utiliser JSON? Et si oui, comment pourrais-je envoyer un objet JSON via ajax?

Merci d'avance.

22
Eric T

Si votre tableau a plus de 1 dimension ou est un tableau associatif, vous devez utiliser JSON.

Json transforme une structure de tableau complète en chaîne. Cette chaîne peut facilement être envoyée à votre application php et reconvertie en tableau php.

Plus d'informations sur json: http://www.json.org/js.html

var my_array = { ... };
var json = JSON.stringify( my_array );

En php, vous pouvez décoder la chaîne avec json_decode:

http://www.php.net/manual/en/function.json-decode.php

var_dump(json_decode($json));
55
jantimon

Faites une boucle sur le tableau et ajoutez à chaque fois encodeURIComponent('keyname[]') + '=' + encodeURIComponent(theArray[i]) + '&' à la chaîne de requête.

en outre, dois-je essayer d'utiliser JSON?

Vous pourriez, mais cela signifierait décoder JSON à l'autre extrémité au lieu de laisser la gestion normale des formulaires s'en occuper.

Et si oui, comment pourrais-je envoyer un objet JSON via ajax?

Il y a rien de tel qu'un objet JSON . JSON prend la forme d'une chaîne et vous pouvez inclure des chaînes dans les chaînes de requête (n'oubliez pas de encodeURIComponent).

1
Quentin