2010-01-06 14 views
72

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 nicht abgeschlossen, als ich das versuchen ... Wie kann ich das Problem beheben?

+0

möglich Duplikat [übergeben Sie einen PHP-String in einem Javascript-Variable (und Flucht newlines)] (http://stackoverflow.com/questions/168214/pass-a-php -string-zu-Javascript-Variable-und-Escape-Zeilenumbruch) – Anthon

Antwort

134
data: { activitiesArray: activities }, 

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

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

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

9

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

http://www.json.org/

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

Der Code würde in etwa so aussehen:

var myJSONText = JSON.stringify(myObject); 

So

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

Wird geworden:

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

Sie müssen sich auf einen PHP-Guru beziehen, wie Sie mit diesem auf dem Server umgehen. Ich denke andere Antworten hier geben eine Lösung.

Daten können auf ähnliche Weise vom Server zurückgegeben werden. I.e. Sie können es zurück in ein Objekt verwandeln.

var myObject = JSON.parse(myJSONString); 
+0

Tough Hälfte, das war in der Tat eine gute Antwort :) – atjoshi

10

Sie wollen Ihre Array als JSON kodieren, bevor sie zu senden, oder Sie werden nur einige Junk am anderen Ende erhalten.

Da alle sind Senden Sie das Array ist, können Sie einfach tun:

data: { activities: activities } 

, die das Array automatisch für Sie konvertieren.

Weitere Informationen finden Sie unter here.

1

Verwenden der JQuery Serialisieren Funktion

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

Serialisieren typischerweise verwendet wird, Benutzereingabedaten zur Vorbereitung auf einen Server gesendet werden. Die serialisierten Daten sind in einem Standardformat, das ist kompatibel mit fast allen Server-Seite Programmiersprachen und Frameworks.

8

Ich weiß, es kann zu spät sein, dies zu beantworten, aber das war für mich eine großartige Art und Weise:

  1. Stringify Ihre Javascript-Objekt (json) mit var st = JSON.stringify(your_object);

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

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

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

Mehrdimensionale Arrays und einzelne Arrays werden wie normale Arrays behandelt. Um auf sie zuzugreifen, tun Sie einfach den normalen $foo[4].

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

0

Das ist für mich gearbeitet:

$.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 dies für Ihre PHP:

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

ich so sein sollte Funktionalität des Anhängens des Array-Operanden an den gewünschten Variablennamen.

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

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

Es kann an den Server gesendet werden, wie folgt:

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

Hinweis die Anführungszeichen Aktivitäten []. Die Werte werden zur Verfügung stehen, wie folgt:

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

Verwenden Sie die PHP integriert:

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