Wie bringt man Laravel dazu, den “Content-Type”-Header einer Ansicht als “application/javascript” zurückzugeben?
Lesezeit: 3 Minuten
Ich versuche, eine dynamische Javascript-Datei zum Einbinden von externen Websites mit auszugeben [script src=""] Schild. Da die Ansicht die Blade-Engine verwendet, wird sie als gerendert text/html.
Ich möchte die Content-Type Kopfzeile, auf die gesetzt werden soll application/javascript nur für diese Ansicht, um zu vermeiden, dass Chrome mich mit Meldungen wie “Resource interpreted as Script but transferred with MIME type text/html:“
<?php
header('Content-Type: application/javascript; charset=UTF-8', true);
?>(function(jQuery) {
// append stylesheets to <head>
var file;
// ...
})(jQuery);
Ich habe festgestellt, dass ich verwenden kann header() aus meiner Sicht zum Hinzufügen benutzerdefinierter Header wie X-Content-Type wie erwartet, aber wenn ich versuche, das neu zu definieren Content-Type Header scheint es nicht einmal mit dem zu tun replace Parametersatz als true.
Mir fehlt hier sicherlich etwas Offensichtliches, ich würde mich freuen, wenn Sie mich darauf hinweisen würden 🙂
vielen Dank für deine Hilfe
Mit Laravel können Sie Header-Informationen über die Response-Klasse ändern, also müssen Sie davon Gebrauch machen. Entferne das header Linie aus Ihrer Sicht und versuchen Sie es so in Ihrem Controller:
Wenn Sie nur JSON in einer Variablen haben und es mit dem richtigen Inhaltstyp im Header an den Browser senden möchten, müssen Sie nur Folgendes tun:
return Response::json($json);
vorausgesetzt natürlich, dass $json enthält Ihr JSON.
Abhängig von den Details Ihrer Situation kann es sinnvoller sein, Ansichten zu verwenden (anstatt Ihr JSON durch Verketten von Zeichenfolgen zu erstellen), aber dies ist immer noch eine Option, wenn Sie eine Ansicht zum Erstellen der Zeichenfolge verwenden. Etwas ungefähr in dieser Richtung sollte funktionieren:
$json = View::make('some_view_template_that_makes_json') -> with ('some_variable', $some_variable)
return Response::json($json);
(Entschuldigung, wenn ich einen Teil der Frage verpasst habe, der einen manuelleren Ansatz erfordert! Zumindest sollte dies für jemanden nützlich sein, der hierher kommt und sich fragt, wie man JSON von Laravel mit dem richtigen Inhaltstyp sendet.)
Response::json() ist nicht mehr verfügbar.
Sie können stattdessen response->json() verwenden.