Php 有没有一种方法可以将带有普通变量的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

如您所见,下面的js和html代码位于同一页面中。当我按下按钮时,ajax将返回
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变量,因此应该可以返回它