Laravel javascript 变量获取到 Blade 文件中

问题描述 投票:0回答:1

我需要在视图刀片文件中获取 js var。 我在控制器中得到了这个并在控制台中获得了成功 在路线文件中

Route::post('/some-route', [Controller::class, 'someMethod']);
Route::post('/some-route', 'Controller@someMethod');//this also work

在js文件中$("#applyBonus").on("click", function ()方法

$.ajax({ 
    url: base_url + '/some-route', // The route to your Laravel controller 
    type: 'POST', 
    data: { 
        someVarName: someInput, // someInput is from blade file input value. got successfully 
         
    }, 
    success: function(response) { 
        console.log(response); //success
        alert("ssuccessss___" + someInput); //success
        
    }, 
    error: function(xhr) { 
        console.error(xhr.responseText); 
        alert("error___");
    } 
}); 

在控制器中

public function yourMethod(Request $request) { 
    //$variable = 'someVarName'; //this also work
    $variable = $request->input('someVarName'); 
    
    //return view('frontend.checkout', compact('variable')); // this also work
    //return view('frontend.checkout')->with('variable'); //this also work
    return view('frontend.checkout')->with('variableName', $variable);//success in console and alert message
} 

现在我尝试在 view.blade.php 中获取这个 $variable

@foreach($variable as $varr) //undefined $variable
       <div class="row">{{ $variable }}</div>
       <div class="row">{{ $varr }}</div>
@endforeach

echo $variable;
//or next. also span tag
<div class="row">{{ $variable }}</div>

每次我都会收到错误 - $variable is undefined

我想要做的是将输入值获取为 php $variable。 也许还有其他方法可以从输入值获取 $variable 而无需刷新页面? 或者 如何从视图刀片文件中的控制器获取此变量? 谢谢

尝试通过输入值->js var ->控制器->刀片文件获取输入值。在最后一步出现错误 $variable undefined

javascript php ajax laravel laravel-blade
1个回答
0
投票

好吧,我假设您的主刀片文件是

checkout.blade.php
view.blade.php
(根据您的共享代码)文件是成功
AJAX
调用后您想要更新数据的页面。

按照以下步骤操作..

  1. 在控制器方法中加载

    view.blade.php
    。执行此操作。

     public function yourMethod(Request $request) { 
       $variable = $request->input('someVarName');
    
       // here `$variable` may not be in array format unless you fetch record from database.
       // So convert it to array if necessary
       if (!is_array($variable)) {
          $variable = [$variable];
       }
    
       //Return a partial view (in you case `view.blade.php`)
       return view('path-to-your-view.blade.php', compact('variable'))->render();
       //Or you can send data like this in JSON-format
       return response()->json([
         'html' => view('path-to-your-view.blade.php', compact('variable '))->render()
       ]);
     } 
    

在控制器方法中返回您想要的

view.blade.php
文件 显示
AJAX
调用成功后的数据。 记得发送
$variable
数组格式。

  1. 在主视图文件中,即

    checkout.blade.php
    (根据您的代码)在您想要显示数据的位置添加这行代码。

    <div id="variable-container">
      {{-- Rendered data from the AJAX call will be injected here --}}
    </div>
    
  2. 最后在

    AJAX
    代码中在此特定部分执行此操作。

     success: function(response) { 
       // Inject the rendered view into the #variable-container div
         $('#variable-container').html(response); 
       //In case you send JSON response from Controller
         $('#variable-container').html(response.html)
    
       console.log("View rendered successfully");
       alert("ssuccessss___" + someInput);
     }, 
    

加载

frontend.checkout
文件后,每当
$("#applyBonus").on("click", function ()..
被触发时
AJAX
都会更新
view.blade.php
文件中的数据而不刷新页面。

试试这个,如果你的AJAX调用返回数据,它肯定会工作。但是如果出现问题,请不要费心来问我。

© www.soinside.com 2019 - 2024. All rights reserved.