2016-09-18 3 views
1

Ich habe eine PHP-Seite, die einige JSON ausgibt. Nachdem die Seite geladen wurde, möchte ich den JSON mit jQuery AJAX ausgeben. Es passiert jedoch nichts. Das Dialogfeld alert() wird nicht angezeigt und funktioniert auch nicht mit der JavaScript-Konsole. Was ist falsch an meinem jQuery AJAX-Anruf?Verwenden Sie jQuery zur Ausgabe von JSON aus PHP Seite

<script type="text/javascript"> 
jQuery.ajax({ url: 'http://www.domain.com/page.php', 
    dataType: 'json', 
    success: function(data) { 
     var obj = jQuery.parseJSON(data); 
     alert(obj.json_array[0]); 
     alert(obj.json_array[1]); 
     alert(obj.json_array[2]); 
    } 
}); 
</script> 

Die PHP ist:

<?php 
$array = [ 
    'foo' => 'bar', 
    'bar' => 'foo', 
    'int' => 4 
]; 

$json_array = json_encode($array); 
echo $json_array; 
?> 

Antwort

1

In PHP können Sie Arrays, wobei jedes Element einen Schlüssel und einen Wert hat, aber wenn man es in Javascript analysieren, das wird ein Objekt. So ist die Verwendung von [0], [1] oder [2] ungültig. Sie müssen foo, bar oder int verwenden. Wenn Sie eine Zeichenfolge wiedergeben, wird der Name der Variablen, die die Zeichenfolge enthält, in keiner Weise gespeichert. Das einzige, was gespeichert (Echo) ist, ist die Saite. In Ihrem Beispiel, echo $json_array; Echos {"foo":"bar","bar":"foo","int":4}, und wenn es analysiert wird, erhalten Sie ein Objekt. Sie müssen also nicht obj.json_array sagen, Sie sagen einfach obj. Also Ihr Problem zu beheben,

ersetzen
alert(obj.json_array[0]); 
alert(obj.json_array[1]); 
alert(obj.json_array[2]); 

mit

alert(obj.foo); 
alert(obj.bar); 
alert(obj.int); 
+0

Hallo Howzieky, habe ich es zu alarmieren (obj.foo); aber trotzdem passiert nichts. Keine Warnung und es funktioniert auch nicht in der JavaScript-Konsole. –

+0

Können Sie 'console.log (obj)' direkt nach dem Setzen von 'obj' einfügen? Was sagt es? – Howzieky

+0

Ich bekomme: Uncaught ReferenceError: Obj ist nicht definiert –