有数据需要从 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更安全的方法吗?
最佳答案
首先你的代码结构如果错误。让我们尝试一个简单的例子。
示例
在 Laravel 这样的 MVC 框架中,您应该定义路由:yourproject/app/HTTP/routes.php
Route::get('/' ,PageController@home);
现在让我们构建我们的 Controller :在您的终端(Windows 中的 cmd)中:
php artisan make:controller PageController
以及您的类中的 Controller 文件(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 中使用您的 sites var!
当您希望在服务器和客户端之间交换数据而不刷新所有页面并且不用于在第一次加载时从 Controller 发送数据时,可以使用 Ajax!并在括号中:如果你想在 laravel 中使用 ajax,你应该设置 AjaxSetup 以避免 CSRF 攻击。在你的 ajax 请求之前:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
}
这是将 var 发送到您的 View 的最安全的方式。希望这对您有帮助,
祝你好运,穆罕默德
关于jquery - 如何在 Laravel 中将数组从 Controller 发送到 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51713575/