Übergabe des JavaScript-Arrays an PHP über jQuery $ .ajax


79

Ich möchte ein JavaScript-Array in PHP bearbeiten. Ist es möglich so etwas zu tun?

$.ajax({
       type: "POST",
       url: "tourFinderFunctions.php",
       data: "activitiesArray="+activities,
       success: function() {
            $("#lengthQuestion").fadeOut('slow');
       }
    });

Aktivitäten ist ein eindimensionales Array wie:

var activities = ['Location Zero', 'Location One', 'Location Two'];

Das Skript wird nicht vollständig ausgeführt, wenn ich dies versuche ... Wie kann ich es beheben?


Antworten:


147
data: { activitiesArray: activities },

Das ist es! Jetzt können Sie in PHP darauf zugreifen:

<?php $myArray = $_REQUEST['activitiesArray']; ?>

10
Warum war diese Antwort so schwer zu finden? Danke, genau das habe ich gebraucht.
Vian Esterhuizen

So einfach wie ein Hacker! Gut gemacht! Du hast mich zum Lachen gebracht: D.
Arashtad Ltd

12

Sie möchten Ihr Array vor dem Senden als JSON codieren, oder Sie erhalten nur etwas Müll am anderen Ende.

Da Sie nur das Array senden, können Sie einfach Folgendes tun:

data: { activities: activities }

Dadurch wird das Array automatisch für Sie konvertiert.

Siehe hier für Details.


11

Sie müssen dies in eine Zeichenfolge verwandeln. Sie können dies mit der stringify-Methode in der JSON2-Bibliothek tun.

http://www.json.org/

http://www.json.org/js.html

Der Code würde ungefähr so ​​aussehen:

var myJSONText = JSON.stringify(myObject);

Damit

['Location Zero', 'Location One', 'Location Two'];

Wird werden:

"['Location Zero', 'Location One', 'Location Two']"

Sie müssen sich an einen PHP-Guru wenden, um zu erfahren, wie dies auf dem Server gehandhabt wird. Ich denke, andere Antworten hier deuten auf eine Lösung hin.

Daten können auf ähnliche Weise vom Server zurückgegeben werden. Das heißt, Sie können es wieder in ein Objekt verwandeln.

var myObject = JSON.parse(myJSONString);

9

Ich weiß, dass es vielleicht zu spät ist, dies zu beantworten, aber das hat bei mir sehr gut funktioniert:

  1. Stringifizieren Sie Ihr Javascript-Objekt (json) mit var st = JSON.stringify(your_object);

  2. Übergeben Sie Ihre POST-Daten als "Zeichenfolge" (möglicherweise mit jQuery: $.post('foo.php',{data:st},function(data){... });

  3. Dekodieren Sie Ihre Daten auf der serverseitigen Verarbeitung: $data = json_decode($_POST['data']);

Das war's ... Sie können Ihre Daten frei verwenden.

Mehrdimensionale Arrays und einzelne Arrays werden als normale Arrays behandelt. Um darauf zuzugreifen, gehen Sie einfach wie gewohnt vor $foo[4].

Assoziative Arrays (Javsacript-Objekte) werden als PHP-Objekte (Klassen) behandelt. Um auf sie zuzugreifen, machen Sie es einfach wie Klassen : $foo->bar.


2

Ich sollte so sein:

$.post(submitAddress, { 'yourArrayName' : javaScriptArrayToSubmitToServer },
  function(response, status, xhr) {
    alert("POST returned: \n" + response + "\n\n");
  })

1

Verwenden Sie die Funktion JQuery Serialize

http://docs.jquery.com/Ajax/serialize

Serialize wird normalerweise verwendet, um Benutzereingabedaten vorzubereiten, die an einen Server gesendet werden sollen. Die serialisierten Daten haben ein Standardformat, das mit fast allen serverseitigen Programmiersprachen und Frameworks kompatibel ist .


1

Das hat bei mir funktioniert:

$.ajax({
    url:"../messaging/delete.php",
    type:"POST",
    data:{messages:selected},
    success:function(data){
     if(data === "done"){

     }
     info($("#notification"), data);
    },
    beforeSend:function(){
         info($("#notification"),"Deleting "+count+" messages");
    },
    error:function(jqXHR, textStatus, errorMessage){
        error($("#notification"),errorMessage);
    }
});

Und das für dein PHP :

$messages = $_POST['messages']
foreach($messages as $msg){
    echo $msg;
}

1

Verwenden Sie die in PHP integrierte Funktionalität, um den Array-Operanden an den gewünschten Variablennamen anzuhängen.

Wenn wir einem Javascript-Array wie folgt Werte hinzufügen:

acitivies.push('Location Zero');
acitivies.push('Location One');
acitivies.push('Location Two');

Es kann wie folgt an den Server gesendet werden:

$.ajax({        
       type: 'POST',
       url: 'tourFinderFunctions.php',
       'activities[]': activities
       success: function() {
            $('#lengthQuestion').fadeOut('slow');        
       }
});

Beachten Sie die Anführungszeichen um Aktivitäten []. Die Werte sind wie folgt verfügbar:

$_POST['activities'][0] == 'Location Zero';
$_POST['activities'][1] == 'Location One';
$_POST['activities'][2] == 'Location Two';

0

Dies liegt daran, dass PHP Ihren Wert als Zeichenfolge liest. Wenn ich meine Daten nicht als Objekt übergeben möchte (wie in den vorherigen Antworten, die auch in Ordnung sind), mache ich dies einfach in meinem PHP:

 $activitiesString = $_POST['activitiesArray'];
 $activitiesArray = (explode(",",$activitiesString));

Die letzte Zeile teilt die Zeichenfolge nach jedem Komma in Bits auf. Jetzt ist $ activityArray auch ein Array. Es funktioniert auch, wenn kein Komma vorhanden ist (nur ein Element in Ihrem Javascript-Array).

Viel Spaß beim Codieren!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.