如何在Laravel中将数组从Controller发送到JavaScript?

时间:2018-08-06 18:23:56

标签: jquery laravel

有些数据需要从Controller发送到View。根据我的阅读,这是这样做的方法,但是警报在页面中什么都没有显示。 这是我在Controller中使用的方法:

public function provider() {
    $sites = array(
    0 => "Mon", 
    1 => "Tue", 
    2 => "Wed", 
    3 => "Thu",
    4 => "Fri", 
    5 => "Sat",
    6 => "Sun",);
    return ($sites);
}

这是我在View中使用的javascript片段:

<script type="text/javascript">
    function provider() {
        $.ajax({
            type: "POST",
            url: '/resultsprovirder',
            cache: false,
            success: function() {
                alert(data);
                alert("success");
            },
            error: function() {
                alert(data);
                alert("error");
            }
        });
     };
</script>

还有,还有比AJAX更安全的方法吗?

2 个答案:

答案 0 :(得分:0)

首先,如果您的代码结构错误,请尝试使用简单的示例。

示例

在laravel之类的MVC框架中,您应该定义路由:

yourproject / app / HTTP / routes.php

Route::get('/',PageController@home);

现在开始构建我们的Controller:在您的终端(Windows中的cmd)中:
php artisan make:controller PageController

以及您的类中的控制器文件( yourproject / app / http / controllers / PageController.php ):

public function home()
    {
        $sites = array(
            0 => "Mon",
            1 => "Tue",
            2 => "Wed",
            3 => "Thu",
            4 => "Fri",
            5 => "Sat",
            6 => "Sun",);
        return view('home',['Sites' => $sites] );// This Line says that your home view is in yourproject/resources/views/home.blade.php and pass $Sites to that file
    }


最后,在 yourproject / resources / views / home.blade.php 中:

<script>
    var sites= @json($Sites);//@json is Blade shortcode for json_encode
</script>

现在您可以在页面js中使用网站变体了!
当您要在服务器和客户端之间交换数据而不刷新所有页面并且不用于在加载时从控制器发送数据时使用Ajax!并放在括号中:如果要在laravel中使用ajax,则应设置AjaxSetup以避免CSRF攻击。在您的ajax请求之前:

 $.ajaxSetup({
                  headers: {
                      'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                  }

这是将var发送到视图的最安全的方法。希望对您有帮助,
最好的问候,穆罕默德

答案 1 :(得分:0)

尝试这种方式:

在您的控制器中

public function provider() 
{

  $sites = [
    0 => "Mon", 
    1 => "Tue", 
    2 => "Wed", 
    3 => "Thu",
    4 => "Fri", 
    5 => "Sat",
    6 => "Sun"
  ];

  $response = [
     'msg' => 'Success',
     'status' => 1,
     'data' => $sites
  ];

  return response()->json($response);

}

在您的查看文件中

<script>
    $(document).ready(function(){
        getdata();
    });

    function getdata(){
       var ajx = new XMLHttpRequest();
       ajx.onreadystatechange = function(){
           if(ajx.readyState == 4 && ajx.status == 200){
               var demo = JSON.parse(ajx.responseText);
               console.log(demo.data);
           }
       }

       ajx.open("GET",'/resultsprovirder',true);
       ajx.send();
    }
</script>

您将在demo.data中获取数据或检查控制台。