json_encode erzeugt einen fehlerhaften JSON (mit extra verstecktem Zeichen)

Ich benutze PHPjson_encode() um einige Daten zurückzugeben, die von jQuery abgerufen wurdenajax():

Vereinfachtes JS:

$.ajax({
    dataType: 'json',
    contentType: 'application/json',
    cache: false,
    type: 'POST',
    url: './api/_imgdown.php',
    error: function(jqXHR, textStatus, errorThrow) {
        console.log(jqXHR, textStatus, errorThrow);
    },
    success: function(data, textStatus, jqXHR) {
        console.log(data, textStatus, jqXHR);
    }
});

Das PHP ist:

header('Content-Type: application/json; charset=UTF-8');
//default apiResponse
$apiResponse = [
    "status" => 1,
    "message" => "success",
    "data" => null
];

Wenn PHP meinen Code ausführt, endet er mit dem Hinzufügen dieser Daten:

$apiResponse['data'][] = [
    "mid" => (int)$mid,
    "card_type" => $card_type,
    "header_size" => (int)$headers['Content-Length'],
    "saved_size" => (int)filesize($imgSavePath),
    "saved_path" => $imgSavePath
];
//spit out the JSON
echo json_encode($apiResponse);
exit();

Der JSON:

{"status":1,"message":"success","data":[{"mid":340052,"card_type":"kakusei","header_size":48337,"saved_size":48337,"saved_path":"..\/card\/kakusei\/340052.png"}]}

Zunächst scheint es gültig. Mein Ajax, der dieses PHP abruft, endet immer mitparseerror (so gehts in dieerror Teil vonajax()).

Wenn Sie diese JSON kopieren und einfügenhttp://jsonlint.com/steht "Unerwartetes Token" undhttp://jsonformatter.curiousconcept.com/ sagt ist nicht gültig.

ich habe es versuchtecho json_encode($apiResponse, JSON_UNESCAPED_SLASHES); Obwohl es in Ordnung ist, Schrägstriche zu vermeiden\/ machte aber keinen unterschied.

Aber was ist nicht genau gültig? Sollte PHP nicht gültiges JSON zurückgeben?

Zusätzliche Informationen: Testen unter Windows 7, Chrome v28.XX, mit PHP 5.4.XX unter Apache

Fragen, die ich gelesen habe, bevor ich diese Frage gestellt habe:

json_encode fehlerhafte JSON-Daten erstellen?https://stackoverflow.com/a/15654848/684932über json_encode und ajax dataType: "json"php json_encode liefert keine korrekte json-codierte Zeichenkette

Aktualisieren:

Wenn Sie von SO nach JSONlint kopieren, erhalten Sie einen gültigen JSON. Also habe ich ein bisschen weiter nachgeforscht und festgestellt, dass PHP ein seltsames verstecktes Zeichen erzeugt, das json tatsächlich ungültig macht. Siehe unten Screenshot. Wie behebe ich das?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage