0

我将 JavaScript 代码放在视图文件名 product/js.blade.php 中,并将其包含在另一个视图中,例如

{{ HTML::script('product.js') }}

我这样做是因为我想用 Laravel 函数在 JavaScript 中做一些事情,例如

var $path = '{{ URL::action("CartController@postAjax") }}';

实际上一切正常,但是浏览器会发出警告消息,如果可能的话,我想问一下如何修复它。

资源解释为脚本,但使用 MIME 类型 text/html 传输

4

4 回答 4

0
public function getWebServices() {   
$content = View::make("_javascript.webService", $data);

    return (new Response($content, 200))->header('Content-Type', "text/javascript");
}

在控制器的方法中返回上述内容

并在 _javascript 文件夹内的 webService 视图中编写您的 javascript 代码。我没有通过 ajax 加载获取数据,而是使用该特定数据创建 js 刀片并对其进行 base64_encode,然后在我的 js 代码中解码并使用它。

于 2015-02-06T08:20:28.823 回答
0

我不确定这是否是您所要求的,但这是一种非常容易地将 ajax 请求映射到 laravel 控制器方法的方法,而不必混淆您的脚本,这通常不是最好的方法。

我使用这些类型的调用通过 ajax 将视图加载到仪表板应用程序中。代码看起来像这样。

AJAX REQUEST(使用 jquery,但你用来发送 ajax 的任何东西都可以)

$.ajax({

    //send post ajax request to laravel
    type:'post',

    //no need for a full URL. Also note that /ajax/ can be /anything/.
    url: '/ajax/get-contact-form',

    //let's send some data over too.
    data: ajaxdata,

    //our laravel view is going to come in as html
    dataType:'html'

}).done(function(data){

    //clear out any html where the form is going to appear, then append the new view.
    $('.dashboard-right').empty().append(data);

    });

LARAVEL 路由.PHP

Route::post('/ajax/get-contact-form', 'YourController@method_you_want');

控制器

public function method_you_want(){

if (Request::ajax())
{
     $data = Input::get('ajaxdata');

     return View::make('forms.contact')->with('data', $data);
}

我希望这对您有所帮助...此控制器方法只调用一个视图,但您可以使用相同的方法来访问您可能需要的任何控制器功能。

这种方法不会返回任何错误,并且通常比将 JS 放入视图中的风险要小得多,这实际上更多地用于页面布局,而不是任何繁重的脚本/计算。

于 2014-04-29T21:27:37.703 回答
0

只需确保 CartController@postAjax 返回 javascript 的内容类型,您就可以开始使用了。像这样的东西:

#CartController.php
protected function postAjax() {
....
$contents = a whole bunch of javascript code;
$response = Response::make($contents, '200');
$response->header('Content-Type', 'application/javascript');
....
}
于 2013-11-04T20:25:16.827 回答
0

首先,将 Javascript 代码放在 Blade 视图中是有风险的。Javascript 可能偶然包含同样是 Blade 语法的字符串,您绝对不希望它被解释。

其次,这也是您收到浏览器警告消息的原因:

Laravel 认为你的 Javascript 是一个普通的网页,因为你已经把它放到了 Blade 视图中,因此它是用这个 header 发送的......

Content-Type: text/html

如果您命名您的文件product.js,而不是将其放入您的视图文件夹中,而是将其放入您的 javascript 资产文件夹中,它将具有正确的标题:

Content-Type: application/javascript

..警告信息将消失。

编辑:

如果您想从 Laravel 将值传递给 Javascript,请使用以下方法:

将此插入您的视图中:

<script type="text/javascript">
    var myPath = '{{ URL::action("CartController@postAjax") }}';
</script>

然后在您的外部脚本中使用该变量。

于 2013-09-02T07:42:40.573 回答