2010-08-17 3 views
5

Ich habe ein PHP-Skript, das Namen (Strings) aus der Datenbank abruft. Ich möchte dieses Array mit $ .ajax() an Javascript übergeben. Ich kann nicht verstehen, wie ich das Array in PHP kodieren und dann in Javascript decodieren soll. Kann jemand einen Beispielcode dafür geben? Vielen Dank !!

Antwort

3
<?php // test.php 
$myArray = array(1, 2, 3); 
echo json_encode($myArray); 
?> 
Datei

HTML:

$(function() { 
    $.getJSON('http://localhost/test.php', function(data) { 
     $(data).each(function(key, value) { 
      // Will alert 1, 2 and 3 
      alert(value); 
     }); 
    }); 
}); 
0

Um dies zu tun, werden Sie müssen nur ein Skript in die PHP-Seite echo, die Ihre Daten enthält, die Sie dann von jedem anderen Javascript auf der Seite zugreifen können, einschließlich jQuery und .ajax().

Auch wenn Sie es nur über einen AJAX-Aufruf übergeben möchten, verwenden Sie einfach json_encode():

<?php 
echo json_encode(
array(
    'groupidlist'=>$groupids, 
    'groupnamelist'=>$groupnames, 
    'serverurl'=>$serverurl, 
    'uid'=>$curuser->getID() 
) 
); 
?> 

Und es dann mit den Callback-Funktionen verarbeiten von .ajax() oder, wahrscheinlich besser, .getJSON(), das ist nur für diesen Zweck gebaut.

Ich verspreche, ich spam nicht nur mein Blog hier, aber ich schrieb einen Beitrag auf passing variables between Javascript and PHP, weil ich es oft genug gemacht habe, dass ich mit einer einfachen/zuverlässigen/sauberen und wiederverwendbaren Weg kam, um dies zu tun. Wenn Sie regelmäßig Daten von PHP an Javascript übergeben und AJAX nicht benötigen, füge ich hier die wesentlichen Elemente ein:

Am Anfang jeder externen js-Datei füge ich Kommentare hinzu, welche PHP-Variablen benötigt werden. ich kann so zu verfolgen, was ich brauche, wenn ich schließe es (das ist optional, natürlich, aber schön):

/* This script depends on the following variables in phpvars: 
groupidlist 
groupnamelist 
serverurl 
uid 
*/ 

Dann wird in der PHP-Datei, gebe ich die benötigten Variablen mit einer einzigen Zeile Javascript ein JSON-Array mit allen erforderlichen Werten zuweisen. Beispiele in PHP, direkt von meinem Code:

<script type="text/javascript"> 
var phpvars = <?php 
echo json_encode(
array(
    'groupidlist'=>$groupids, 
    'groupnamelist'=>$groupnames, 
    'serverurl'=>$serverurl, 
    'uid'=>$curuser->getID() 
) 
); 
    ?>; 
</script> 

Sobald die eingerichtet ist, dann kann ich zugreifen einfach, was PHP-Variablen I in der Javascript muß durch die phpvars Array. Zum Beispiel, wenn ich eine Bildquelle mit meinem serverURL zu setzen brauchte, was ich tun konnte wie folgt:

imgElement.src = phpvars.serverurl + '/images/example.png'; 

Weil es JSON verwendet, gibt es keine Sorgen darum, sicherzustellen, dass Sie nichts tun vermasseln in Ihrem Javascript, indem versucht wird, die PHP-Variablen einzufügen. Die Kodierung/Dekodierung der Variablen wird an beiden Enden durch eingebaute JSON-Funktionen gehandhabt, so dass es sehr schwierig ist, sie zu durchbrechen, und hirnlos Variablen zu übergeben - Sie übergeben sie wie jedes andere PHP-Array. In meiner Fummelei, die dazu führte, hatte ich Probleme mit beiden, und diese Lösung kümmert sich gut um sie.

1
<?php 
    echo json_encode(array('key' => 'value', 'cool' => 'ice')); 
?> 

json ist ein JavaScript-Objekt. Es besteht also keine Notwendigkeit, es zu "dekodieren". Es sieht jedoch so aus, als ob Sie jQuery verwenden. Es ist eine nette Funktion für das Abrufen von JSON-Daten:

jQuery.getJSON(url, senddata, function(returndata){alert(returndata.cool);}) 

oder

jQuery.getJSON(url, senddata, function(returndata){mybigfunction(returndata);}) 

mybigfunction(data) 
{ 
    myvar = data.cool; 
    alert(myvar); 
} 

http://api.jquery.com/jQuery.getJSON/

oder Sie können es auch tun, mit $ Schnipsel, wie Sie erwähnt:

jQuery.ajax({ 
    url: url, 
    dataType: 'json', 
    data: senddata, 
    success: function(data){mybigfunction(data)} 
}); 

mybigfunction(data) 
{ 
    myvar = data.cool; 
    alert(myvar); 
} 

http://api.jquery.com/jQuery.ajax/

Der "Rückruf" ist eine Funktion, die die von der URL zurückgegebenen JSON-Daten aufruft und weiterleitet.

Sie werden 'Eis' Baby ... ermm ... Entschuldigung für den Mais.

Die getJSON-Methode ist eher kurz und handlich. Sehen Sie sich die Links für weitere Details an.

+0

Wenn ich 'echo json_encode (Array ('Hallo', 'Welt', '!'));' In PHP, wie konnte ich einfügen dieses Array in Javascript Variable 'arr', so dass 'arr [0] == "Hallo"? –

+0

siehe den jquery Code, den ich geschrieben habe, so. Das ist der Anruf und die Rückgabedaten alle dort. Manchmal möchten Sie große Dinge mit den Daten tun, so und Inline-Funktion ist ein Schmerz. Also werde ich meine Antwort aktualisieren –

+0

Ich kann sehen, dass Sie Arrays verwendet werden. In Javascrip ist ein Array nur eine andere Art von Objekt. Mit dem "." Können Sie auf alle Eigenschaften und Methoden eines Objekts zugreifen. In meinem Beispiel sehen Sie data = array ('cool' => 'ice') wird data.cool = ice. Wenn Sie es stattdessen wirklich in einem Array möchten, müssen Sie das Objekt mit einem for oder while überlappen. –

0

Dies ist Php Datei-Code

<?php 
$array = array(1, 2, 3); 
echo json_encode($array); 
?> 

Dann Sie $array in Ihrem $.ajax() wie diese

success: function (data) { 
      var x = JSON.parse(data); 
      console.log(x); 
     } 
Verwandte Themen