it-swarm.com.de

JavaScript-Array an übergeben PHP durch jQuery $ .ajax

Ich möchte ein JavaScript-Array in PHP manipulieren. Kann man so etwas tun?

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

Aktivitäten sind ein eindimensionales Array wie:

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

Das Skript wird nicht abgeschlossen, wenn ich es versuche ... Wie kann ich es beheben?

76
krx
data: { activitiesArray: activities },

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

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

Sie müssen Ihr Array vor dem Senden als JSON codieren. Andernfalls erhalten Sie am anderen Ende Junk.

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

data: { activities: activities }

dadurch wird das Array automatisch für Sie konvertiert.

hier für Details.

11
jvenema

Sie müssen daraus eine Zeichenfolge machen. 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);

So 

['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 Sie dies auf dem Server erledigen. Ich denke, andere Antworten hier sind eine Lösung.

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

var myObject = JSON.parse(myJSONString);
10
James Wiseman

Ich weiß, es ist zu spät, um dies zu beantworten, aber das hat für mich großartig funktioniert:

  1. Stringify 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 in der serverseitigen Verarbeitung: $data = json_decode($_POST['data']);

Das ist es ... Sie können Ihre Daten frei verwenden.

Mehrdimensionale Arrays und einzelne Arrays werden als normale Arrays behandelt. Um auf sie zuzugreifen, führen Sie einfach den $foo[4] aus.

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

9
lu1s

Verwenden Sie die JQuery Serialize-Funktion

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

Serialize wird normalerweise zur Vorbereitung von .__ verwendet. Benutzereingabedaten, die an ein .__ gebucht werden sollen. Server. Die serialisierten Daten befinden sich in einem Standardformat, das kompatibel ist mit fast allen serverseitigen Programmiersprachen und Frameworks.

1
Gazzer

Ich sollte so sein:

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

Das hat für mich 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 deinePHP:

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

Verwenden Sie die integrierte Funktion PHP des anhängenden Array-Operanden an den gewünschten Variablennamen.

Wenn Sie 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 Zitate rund um Aktivitäten []. Die Werte stehen wie folgt zur Verfügung:

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

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 das einfach in meinem PHP:

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

Die letzte Zeile teilt den String nach jedem Komma in Bits auf. $ ActivitiesArray ist jetzt auch ein Array. Es funktioniert auch ohne Komma (nur ein Element in Ihrem Javascript-Array).

Viel Spaß beim Codieren!

0
Hawthorn