我们可以使用AJAX Post请求将值从视图传输到Controller。我这样做并成功地将值从视图传递到Controller。但是我可以使用AJAX Post请求将值从一个视图传输到另一个视图吗?我正在这样做,因为Laravel建议。但在这方面不成功。难道我做错了什么?请帮忙。谢谢。 这是我的代码:
Page.blade.php:
<script>
$(document).ready(function(){
$('a#one').on('click', function () {
var text=$(this).text();
console.log(text);
$.ajax({
url: APP_URL+'/show',
method: 'post',
data: {
text: text
},
success: function(response){
console.log(response);
}
});
});
});
</script>
web.php:
Route::post('show','UserController@special');
Route::get('/show' , [
'uses' => 'UserController@special1',
'as' => 'show'
]);
控制器:
public function special(Request $request){
$text = $request->input('text');
echo " dsds ".$text;
// do stuff with $text
$projects=DB::table('projects')->where('projects.type', '=', $text)->get();
return view('show',compact('projects'));
}
您可以看到我使用紧凑型函数将值传输到另一个名为show.blade.php
的视图,但它没有传输值。如何将其转移到show.blade.php
?我知道使用GET
方法可以很容易地传递价值。但我希望使用POST
请求进行转移。
答案 0 :(得分:1)
Ajax如何工作
正如您在右侧方框第二个子弹点上看到的那样。当您发出AJAX请求时,它会返回原始调用者的响应。
您的web.php
和Controller
似乎没问题。当你发出AJAX请求时,它会点击special
函数,但是当你return view('show',compact('projects'));
它返回你的view
作为对AJAX Call的HTML响应时(你可以在你的控制台日志中看到html)。因此,这意味着您无法从ajax加载新视图。
您可以使用常规的同步调用来加载新的。 :)
或者如果您只想更新同一页面上的内容,可以参考以下链接