it-swarm.com.de

Senden Sie ein Array mit einer Ajax-Anfrage an PHP

Ich habe ein Array wie dieses ["9", "ques_5", "19", "ques_4"] erstellt. Jetzt möchte ich es von JS an PHP senden, aber ich bekomme keine richtigen Ergebnisse. Mein JS-Code lautet:

$(".button").click(function(e) {

    e.preventDefault();
    $.ajax({
        type    : 'post', 
        cache   : false,
        url     : 'test/result.php',
        data    : {result : stuff},
        success: function(resp) {
            alert(resp);
        }
    });
});

In obigem Code stuff ist ein Array, das Datensätze enthält. Wie kann ich dieses Array mit dem obigen Code senden, und dann möchte ich in PHP dieses Array so verarbeiten, dass ques_5 der Schlüssel ist und 9 der Wert für diesen Schlüssel wird.

11
Mahmood Rehman

Sie können die Daten als JSON object an das PHP -Skript übergeben. Angenommen, Ihr JSON-Objekt sieht folgendermaßen aus:

var stuff ={'key1':'value1','key2':'value2'};

Sie können dieses Objekt auf zwei Arten an den PHP-Code übergeben:

1. Übergeben Sie das Objekt als Zeichenfolge:

AJAX-Anruf:

$.ajax({
    type    : 'POST',
    url     : 'result.php',
    data    : {result:JSON.stringify(stuff)},
    success : function(response) {
        alert(response);
    }    
});

Sie können die an result.php übergebenen Daten wie folgt behandeln:

$data    = $_POST["result"];
$data    = json_decode("$data", true);

//just echo an item in the array
echo "key1 : ".$data["key1"];

2. Objekt direkt übergeben:

AJAX-Anruf:

$.ajax({
    type    : 'POST',
    url     : 'result.php',
    data    : stuff,
    success : function(response) {
        alert(response);
    }    
});

Behandeln Sie die Daten direkt in result.php von $_POST array wie folgt:

//just echo an item in the array
echo "key1 : ".$_POST["key1"];

Hier schlage ich die zweite Methode vor. Aber du solltest beides probieren :-)

23
Sherin Jose

Wenn Sie Schlüsselwertpaare senden möchten, was ich sehe, ist es besser, eine PHP JSON-Bibliothek (wie diese ... http://php.net/manual/de) zu verwenden /book.json.php )

Dann können Sie tatsächliche Schlüsselwertpaare im JSON-Format wie ....__ senden. {"ques_5": "19", "ques_4": "19"} 

2
FloatingCoder

Versuche dies

var array = ["9", "ques_5", "19", "ques_4"];
console.log(array.join(","));

der obige Code gibt den String mit Komma wie 9,ques_5,19,ques_4 aus und fügt ihn dann in einen Ajax-Aufruf ein.

Und dann in php explode diese Zeichenfolge.

Andere mögliche Lösungen.

Zuerst

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);
    } 
});

Zweite

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));
?>
2
Dipesh Parmar

Sie können das array in json Format an den PHP-Server senden und dann die json_decode Funktion verwenden, um das Array wie- der zurückzuholen

Bei einem Ajax-Aufruf müssen Sie json senden. Dazu müssen Sie zunächst ein Array der Werte erstellen, damit Sie es in der richtigen Form Erhalten, damit Sie wie {"ques_5":"9","ques_4":19} aussehen.

und verwenden Sie in Ajax Call

 data: JSON.stringify(`your created json`),
 contentType: "application/json; charset=utf-8",
 dataType: "json",

IN PHP sieht es so aus

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>
1
Dinkar Thakur

Ich möchte ein vollständiges Beispiel teilen, das für mich funktioniert, um zu vermeiden, dass für jede PHP-Funktion jede Javascript-Funktion erstellt wird

// auf der HTML-Seite ein einfacher Javascript-Aufruf über einen Link

 <a href="javascript:CargaZona('democonllamada', 'tituloprin', {'key1':'value1','key2':'value2'})" >test</a>
<div id='tituloprin' >php function response here!</div>

// auf der Javascript-Seite

 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);
    });
}

// auf der Seite 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'];

}

?>
0