有些数据需要从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更安全的方法吗?
答案 0 :(得分:0)
首先,如果您的代码结构错误,请尝试使用简单的示例。
Route::get('/',PageController@home);
php artisan make:controller PageController
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中获取数据或检查控制台。