我需要在视图刀片文件中获取 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
好吧,我假设您的主刀片文件是
checkout.blade.php
和 view.blade.php
(根据您的共享代码)文件是成功 AJAX
调用后您想要更新数据的页面。
按照以下步骤操作..
在控制器方法中加载
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
数组格式。
在主视图文件中,即
checkout.blade.php
(根据您的代码)在您想要显示数据的位置添加这行代码。
<div id="variable-container">
{{-- Rendered data from the AJAX call will be injected here --}}
</div>
最后在
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调用返回数据,它肯定会工作。但是如果出现问题,请不要费心来问我。