PHP-Funktionen json_encode nicht zurück gültiges json

Ich bin ein Debian-box mit PHP v5.2.17. Ich bin versucht zu bekommen, um die cross-domain-Problem mit einer XML-Datei und verwende diese bekam zum abrufen aller xml-und json zurückgeben:

<?php
header('content-type: application/json; charset=utf-8');

if( strlen($_GET["feed"]) >= 13 ) {
  $xml = file_get_contents(urldecode($_GET["feed"]));
  if($xml) {
    $data = @simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOCDATA);
    $json = json_encode($data);

    echo isset($_GET["callback"]) ? "{$_GET[’callback’]}($json)" : $json;
  }
}
?>

Das problem ist, es ist nicht die Rückkehr gültigen json, jquery.. Das start-Zeichen "(" und das Ende ")" wo jquery-will "[" als Anfang und "]" als das Ende. Ich habe die Ausgabe und verwendet mehrere online-Validierungs-tools, um es zu überprüfen..

Gibt es eine Möglichkeit, die ich ändern kann, die diese Zeichen vor dem senden zurück oder übergeben Sie die Funktionen json_encode Optionen?

  • funktioniert es, wenn Sie entfernen die header('content-type: application/json; charset=utf-8'); Teil? Ich hatte noch nie ein problem mit json_encode() und ich habe nie ein header wie, dass entweder, aber vielleicht sollte ich sein.
  • Mit ( und ) Sie eigentlich nicht, daß diejenigen, die in "{$_GET[’callback’]}($json)"? Wenn ja, entfernen Sie es? Sonst wäre ich sehr überrascht, zu finden json_encode gibt einen Wert zurück, mit den umschließenden Klammern.
  • Ihre Frage Titel ist nicht wahr. json_encode() zurück gültige JSON, auch mit SimpleXML Objekte; die Ausgabe geht irgendwelche JSON validator, und Sie können erfolgreich json_decode() es. Das eigentliche problem wurde bereits hervorgehoben, indem mehrere Antworten.
  • Können Sie uns zeigen Sie Ihre jQuery-ajax-call?
InformationsquelleAutor Dennis | 2011-06-29
Schreibe einen Kommentar