通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图
Posted
技术标签:
【中文标题】通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图【英文标题】:Passing value from one view to another view by AJAX Post Request in Laravel 【发布时间】:2018-01-28 23:55:54 【问题描述】:我们可以使用 AJAX Post 请求将值从视图传输到控制器。我正在这样做并成功地将值从视图传递到控制器。但是我可以使用 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
请求来传输它。
【问题讨论】:
尝试Route::get('show/text',[...]
并在您的控制器上使用public function special(Request $request, $text)
【参考方案1】:
Ajax 的工作原理
正如您在右侧框第二个要点上看到的。当您发出 AJAX 请求时,它会返回给原始调用者的响应。
您的web.php
和Controller
看起来不错。当您发出 AJAX 请求时,它会触发 special
函数,但是当您 return view('show',compact('projects'));
它会返回您的 view
作为对 AJAX 调用的 html 响应(您可以在控制台日志中看到 html)。所以这意味着你不能从 ajax 加载新视图。
您可以使用常规同步调用来加载新的。 :)
或者如果您只想更新同一页面上的内容,您可以参考以下链接
How can I return a view from an ajax call in Laravel 5
【讨论】:
感觉很糟糕,我不能这样做。那只是我的愿望!!!虽然你这么多:)以上是关于通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Ajax 请求使用 post 方法抛出 MethodNotAllowedException