it-swarm.com.de

So übergeben Sie ein Array mit PHP & Ajax zu Javascript?

Entschuldigung, wenn diese Erklärung nicht klar ist, ist es auch für mich schwer zu verstehen. Wie kann ich mit PHP & Ajax ein Array an Javascript senden? Ich benutze Ajax, um eine Reihe von Fotos zu erhalten, die ich dann an einen leeren <div> auf meiner Seite anhange.

Die jQuery sieht folgendermaßen aus:

$.ajax({
    url: "<?php echo site_url('demo/getPhotos/'); ?>",
    type: 'POST',
    data: form_data,
    success: function(data) {
        alert(data);
   }

Und die Funktion PHP getPhotos sieht folgendermaßen aus:

<?php

$photos = array();

foreach ($data as $photo) {
    array_Push($photos,$photo['source']);
    }

// echo json_encode($photos); How should I be returning $photos?

Wenn ich einfach echo $photos; bin, werden die Daten an den Erfolgsrückruf gesendet, scheinen aber nicht in einem verwendbaren Format zu sein.

Wenn ich eine var_dump($photos) in PHP mache, sieht das Ergebnis etwa so aus:

array(4) {
  [0]=>
  string(14) "some_image.jpg"
  [1]=>
  string(14) "some_image.jpg"
  [2]=>
  string(14) "some_image.jpg"
  [3]=>
  string(14) "some_image.jpg"
}

Ich habe verschiedene Kombinationen von json_encode und dergleichen ausprobiert, aber ich schätze wirklich und bin mir nicht sicher, welche Theorie dahinter steht. Was ist der beste Weg, um Daten in diesem Zusammenhang von PHP an Javascript zu übergeben?

14
Joe W

Versuchen:

$.ajax({
    url: "<?php echo site_url('demo/getPhotos/'); ?>",
    type: 'POST',
    data: form_data,
    dataType:"json",
    success: function(data) {
        alert(data[0]);
   }

Auf der Seite PHP möchten Sie Folgendes drucken:

print json_encode($photos);

Eine andere Sache, die Sie vielleicht ausprobieren könnten, um Ihren Code besser zu verkapseln, und als Beispiel für weitere JSON-Zielsetzung wäre:

print json_encode(array("photolist"=>$photos,"photo_owner"=>"Me!"));

Dann auf dem Server würden Sie darauf zugreifen mit:

data.photolist[0]; //First photo
data.photo_owner;  //The owner of the photo set
23
Richard

Ich habe ein Array $result in PHP und am Ende der Anfrage erstellt.

 echo json_encode($result); 

und in JS $.post Handler-Funktion: 

var obj = $.parseJSON(data);
var v = data.k; 

dabei ist k der Schlüsselwert im assoziativen Array.

10
bboydev

json_encode ist definitiv der Weg zu gehen. jQuery bietet sogar eine integrierte Unterstützung für das Parsen von JSON. Sie könnten z.

$.ajax({
    url: "<?php echo site_url('demo/getPhotos/'); ?>",
    type: 'POST',
    data: form_data,
    dataType: 'json', // will automatically convert array to JavaScript
    success: function(array) {
        alert(array[0]); // alerts first string
    }
});
2
pimvdb

json_encode rulez, wenn Sie dieses Zeug brauchen.

Ich habe kürzlich auch dieses coole Ding gelernt! So machen Sie es:

function jsonResponse($array) {
     header('Content-type: application/json; charset=utf-8;');
     die(json_encode($array));
}

Dies ist optional, wenn Sie es tun wollen, müssen Sie dies nicht tun, aber in meinem MVC-System schreibe ich normalerweise auf diese Weise ... Also erstelle ich eine Ajax-Anfrage (Prototyp) für ein Skript, die später erfolgt ruft diese Funktion jsonResponse auf, die ich bereits erwähnt habe ...

    new Ajax.Request('URL',
{
    method:'post',
    onSuccess: function(transport){
        res = transport.responseJSON;
        $('actionInformation').update(res.username);
    },
    onFailure: function(){
        alert('Something went wrong...')
    }
});

Dies ist der jscript-Code, beachten Sie die res.msg. Hier können wir mit array arbeiten. Stellen Sie jedoch sicher, dass Sie in PHP mit der Funktion jsonResponse eine Antwort im JSON-Format senden. Diese Funktion ist einfach zu verwenden. Ihre PHP-Funktion kann beispielsweise wie folgt aussehen:

function ajax_get_user() {
     $userName = 'Adrian';
     $active = 1;
     jsonResponse(array('username' => $username, 'active' = $active));
}

Später können Sie es leicht bekommen, res.username, res.active.

Ich denke das sollte es tun!

0
Adrian

bringen Sie den Json selbst zurück und konstruieren Sie das Array in Js, indem Sie den Json wie folgt schleifen:

var array=[];
for(var key in json)
{    
    if(json.hasOwnProperty(key))
      array.Push(json[key]);
}

Oder Sie können einfach mit dem Json selbst arbeiten, aus welchem ​​Grund Sie das Array benötigen? 

so etwas wie Json [0] oder Json [1] usw.

0
Baz1nga