2016-10-10 4 views
2

ich eine Ausgabe-Array bin Gebäude wie soNewline in json_encode() -Ausgabe

  if (count($errors)) { 
       $success = 'false'; 
       $output['json_msg'] = "Please try your submission again."; 
       $output['errors'] = $errors; 
      } else { 
       $success = 'true'; 
       $output['json_msg'] = "Thanks for Becoming a NOLA Insider!"; 
      } 

      $output['success'] = $success; 

      header('Content-type:application/json;charset=utf-8'); 
      if (count($errors)) { http_response_code(500); } 
      echo json_encode($output);   
      exit; 

Aber wenn ich mir die Antwort aussehen in Chrome Fenster Netzwerk der Entwickler-Tools Ich sehe, was ein Newline als Antwort zu sein scheint:

developer console screenshot

ich versuchte json_encode() in trim() packen, aber das gab verstümmelt ausgegeben.

Wie kann ich den Wagenrücklauf eliminieren?

+1

einige Zeit seine wegen Leerraum vor

Antwort

2

Haben Sie eine ?> am Ende Ihrer PHP-Datei und was passiert, wenn Sie es entfernen?

Da können Sie einen Wagenrücklauf am Ende des Skripts haben, die vor Ihrer Antwort gesendet werden kann:

?>\n 
// END OF FILE 

Dies wird durch die Tatsache erklärt, dass PHP ist eigentlich eine Template-Sprache:

Hier ist eine Datei, die eine Funktion definiert und einen Text anzeigt:

Und hier ist eine Datei, die diese Datei enthält.

<?php 
/** 
* @file index.php 
*/ 
include_once('lib.php'); 
sayHello(); 

erhalten Sie folgende Ausgabe:

forgotten text 
hello 

Der „vergessene Text“ wird ausgegeben, wenn die lib.php-Datei enthalten ist, während die „Hallo“ ausgegeben, nachdem ist.

(Aber es kann sein, noch einfacher und nur der Punkt, der vorgeschlagene @nanocv)

+0

Danke. Ich hatte das vorher überprüft, habe es aber jetzt nochmal überprüft. Nichts nachher?> – jerrygarciuh

+0

Es war eine separate Datenbankverbindungsdatei enthalten. Es hatte eine neue Zeile nach?> Und sobald das Problem behoben wurde. Vielen Dank! – jerrygarciuh

3

können Sie versuchen, neue Zeile zu entfernen str_replace

$output = str_replace(array("\r\n", "\n", "\r"),'',$output); 
echo json_encode($output); 
+0

Danke. Ich habe dies hinzugefügt und es behält die JSON, aber ich habe immer noch die Rückkehr, so dass das \ n nicht in $ output aber anderswo in meinem Code ist. – jerrygarciuh

2

Verwendung Wenn Sie die neuen Zeilen Zeichen wie \r\n zu Ihrem json Code nach json_encode() bekommen können Sie die Methode mit den endgültigen json_value Follow-up, die Sie erhalten. Dadurch werden alle neuen Zeilen entfernt, die aus dem Code ausgegeben wurden, den Sie erhalten, nachdem Sie die json_encode() ausgeführt haben.

Daher müssen Sie preg_replace() den Json outputed Wert wie folgt, die uo die neuen Zeilen von der json_code entfernen.

Dadurch werden die neuen Zeilen ohne Wert auf den zweiten Parameter in preg_replace() ersetzt.

Sich möglichst keine weißen zwischen dem php codes (d) Öffnen und Schließen von Codes im Abstand zu schaffen, die Sie entweder am Anfang oder am Ende des Dokuments verarbeiten. Dies kann manchmal das Problem verursachen.

Code:

$output_json = preg_replace("!\r?\n!","", $output_json); 
2

ich Ihren PHP-Code setzen beginnt so:

1.   <--- Note the blank line here 
2. <?php 

, dass ein neue Linie Charakter ist, der Teil wurde wird von das Ergebnis.

(So kann ich das gleiche Verhalten neu erstellen könnte)

enter image description here

+0

Ich habe Code für genau dieses Problem gesucht, aber nicht gefunden. Erste Zeile hat keinen Platz und jerrygarciuh

+1

Dann habe ich die Wette verloren! Ich hatte vorher einen sehr ähnlichen Fehler und es wurde für diese Leerzeile verursacht, also dachte ich, es wäre der gleiche Fall. Ich bin froh, dass du es gelöst hast! – nanocv