Php 有没有一种方法可以将带有普通变量的ajax响应发送/传递给视图?
如您所见,下面的js和html代码位于同一页面中。当我按下按钮时,ajax将返回Php 有没有一种方法可以将带有普通变量的ajax响应发送/传递给视图?,php,ajax,laravel,Php,Ajax,Laravel,如您所见,下面的js和html代码位于同一页面中。当我按下按钮时,ajax将返回Itemjson。我的目标是了解是否可以在测试函数中同时返回带有$item变量的json响应。这是因为我想在视图blade中使用$item变量。如果是,那怎么办 控制器 public function index() { $furniture = Furniture::all(); return view('index', compact('furniture')); } public funct
Item
json。我的目标是了解是否可以在测试函数
中同时返回带有$item
变量的json响应。这是因为我想在视图blade中使用$item
变量。如果是,那怎么办
控制器
public function index()
{
$furniture = Furniture::all();
return view('index', compact('furniture'));
}
public function test(Request $request)
{
$item = Item::findOrFail($request->item_id);
return response()->json([
'data' => [
'success' => $item,
'key1' => "hello",
'key2' => "world",
]
]);
}
JS
$(document).on('click', '.edit_modal', function() {
var item_id = this.id;
$.ajax({
type: 'POST',
url: "{{ URL::route('test') }}",
headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
data: { "item_id" : item_id},
success: function(data){
if(data.data.success){
$('#edit_id').val(data.data.success.id); // this will output the id eg. 1
$('#edit_desc').val(data.data.success.description); // this will output the description eg. "hi there"
console.log(data.data.key1); // this will output "hello"
console.log(data.data.key2); // this will output "world"
}
}
});
查看
<button type="button" class="edit_modal btn btn-primary" id="{{ $furniture->item_id }}">Button</button>
按钮
刀片视图在服务器端呈现。视图显示在浏览器上时,渲染已完成
当运行AJAX请求时,当前视图中没有进一步的渲染(通过Blade或PHP)。因此,不能通过AJAX将其他变量传递给刀片模板
如果您真的想要这个功能,那么从使用AJAX开始似乎很奇怪。您只需正常提交表单,然后从服务器端呈现一个新视图,并将$item
传递给该视图。使用AJAX时,您需要返回Javascript可以理解(JSON)的响应,而不是PHP可以理解的响应,因为Javascript将在客户端呈现响应
在此处阅读有关服务器端编程和客户端编程之间差异的更多信息:刀片视图在服务器端渲染。视图显示在浏览器上时,渲染已完成 当运行AJAX请求时,当前视图中没有进一步的渲染(通过Blade或PHP)。因此,不能通过AJAX将其他变量传递给刀片模板 如果您真的想要这个功能,那么从使用AJAX开始似乎很奇怪。您只需正常提交表单,然后从服务器端呈现一个新视图,并将
$item
传递给该视图。使用AJAX时,您需要返回Javascript可以理解(JSON)的响应,而不是PHP可以理解的响应,因为Javascript将在客户端呈现响应
在这里阅读更多关于服务器端和客户端编程之间区别的信息:是的……当然。你可以退回任何你喜欢的东西。只需在响应()中的某个地方包含$item->json结构。。。。它将被连载到JSON@ADyson像这样<代码>返回响应()代码>…所以在视图中,我可以使用dd($item)?如果希望在请求后加载视图,则不应该使用AJAX。不能通过AJAX将PHP变量传递给javascript。视图已从PHP呈现,并在页面加载时发送到浏览器。@Devon不确定您得到的是什么。ajax请求调用的“test”PHP方法在该上下文中生成$item变量,因此应该可以返回它。你可以退回任何你喜欢的东西。只需在响应()中的某个地方包含$item->json结构。。。。它将被连载到JSON@ADyson像这样<代码>返回响应()代码>…所以在视图中,我可以使用dd($item)?如果希望在请求后加载视图,则不应该使用AJAX。不能通过AJAX将PHP变量传递给javascript。视图已从PHP呈现,并在页面加载时发送到浏览器。@Devon不确定您得到的是什么。ajax请求调用的“test”PHP方法在该上下文中生成$item变量,因此应该可以返回它