J'ai créé un tableau comme celui-ci ["9", "ques_5", "19", "ques_4"]
. Maintenant, je veux l'envoyer de JS à PHP mais je n'obtiens pas de résultats corrects. Mon code JS est:
$(".button").click(function(e) {
e.preventDefault();
$.ajax({
type : 'post',
cache : false,
url : 'test/result.php',
data : {result : stuff},
success: function(resp) {
alert(resp);
}
});
});
Dans le code ci-dessus, un tableau contient des enregistrements. Comment puis-je envoyer ce tableau avec le code ci-dessus puis dans PHP, je veux traiter ce tableau comme si ques_5
était la clé et 9
devenait la valeur de cette clé.
Vous pouvez transmettre les données au script PHP sous la forme d'un objet JSON . Supposons que votre objet JSON ressemble à:
var stuff ={'key1':'value1','key2':'value2'};
Vous pouvez passer cet objet au code php de deux manières:
1. Transmettez l'objet sous forme de chaîne:
Appel AJAX:
$.ajax({
type : 'POST',
url : 'result.php',
data : {result:JSON.stringify(stuff)},
success : function(response) {
alert(response);
}
});
Vous pouvez gérer les données transmises au result.php
comme suit:
$data = $_POST["result"];
$data = json_decode("$data", true);
//just echo an item in the array
echo "key1 : ".$data["key1"];
2. Passez l'objet directement:
Appel AJAX:
$.ajax({
type : 'POST',
url : 'result.php',
data : stuff,
success : function(response) {
alert(response);
}
});
Traitez les données directement dans le tableau result.php
à partir du tableau $_POST
comme suit:
//just echo an item in the array
echo "key1 : ".$_POST["key1"];
Ici, je suggère la deuxième méthode. Mais vous devriez essayer les deux :-)
Si vous souhaitez envoyer des paires clé-valeur, ce que je vois, il serait préférable d'utiliser une bibliothèque JSON PHP (comme celle-ci ... http://php.net/manual/fr /book.json.php )
Ensuite, vous pouvez envoyer des paires de valeurs de clé réelles, en utilisant le format JSON tel que ... {"ques_5": "19", "ques_4": "19"}
Essaye ça
var array = ["9", "ques_5", "19", "ques_4"];
console.log(array.join(","));
le code ci-dessus générera une chaîne avec des virgules séparées comme 9,ques_5,19,ques_4
puis collerez-la dans appel ajax.
Et puis dans php explode
cette chaîne.
Autres solutions possibles.
Premier
var obj = { 'item1': 'value1', 'item2': 'value2' };
$.ajax(
{
type: 'post',
cache: false ,
url: 'test/result.php',
data: { result : JSON.stringify(obj) },
success: function(resp)
{
alert(resp);
}
});
Seconde
var a = $.JSON.encode(obj);
$.ajax(
{
type: 'post',
cache: false ,
url: 'test/result.php',
data: { result : a },
success: function(resp)
{
alert(resp);
}
});
In PHP File
<?php
$json = $_POST["data"]
var_dump(json_decode($json));
?>
Vous pouvez envoyer le format array in json
au php puis utiliser la fonction json_decode
pour récupérer le tableau comme ceci:
Dans un appel ajax, vous devez envoyer un json car vous devez d'abord créer un tableau des valeurs afin de l'obtenir sous la forme correcte Afin que votre json ressemble à {"ques_5":"9","ques_4":19}
et utiliser en appel ajax
data: JSON.stringify(`your created json`),
contentType: "application/json; charset=utf-8",
dataType: "json",
IN PHP il ressemble à
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>
Je voudrais partager un exemple complet qui fonctionne pour moi afin d'éviter de faire chaque fonction javascript pour chaque fonction php
// côté HTML, un simple appel javascript à partir d'un lien
<a href="javascript:CargaZona('democonllamada', 'tituloprin', {'key1':'value1','key2':'value2'})" >test</a>
<div id='tituloprin' >php function response here!</div>
// côté javascript
function CargaZona(fc, div, params) {
var destino = "#" + div;
var request = $.ajax({
url : "inc/phpfunc.php",
type : "POST",
data : {
fc : fc,
params : JSON.stringify(params)
},
dataType : "html"
});
request.done(function (msg) {
$(destino).html(msg);
});
request.fail(function (jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
}
// sur la page phpfunc.php
<?php
$params = "{'key1':'value1','key2':'value2'}";
$fc = 'def';
if (isset($_POST['fc'])) { $fc = $_POST['fc']; }
if (isset($_POST['params'])) { $params = $_POST['params']; }
switch ($fc) {
default:
call_user_func($fc,$params);
}
function democonllamada($params) {
$params = json_decode("$params", true);
echo "ok llegaron".$params['key1'];
}
?>