我正在尝试将带有数据的变量从函数发送到 laravel 首页视图,我得到未定义的变量:数据(视图:C:\xampp\htdocs\laravelproject esources iews\process-url.blade.php).
这是我的代码和 web.php 路由。
web.php
Route::get('/', [welcomechecker::class, 'getfrontpage']);
Route::post('process-url', [welcomechecker::class, 'saveformdata']);
welcomechecker.php 控制器
class welcomechecker extends Controller
{
function getfrontpage(){
return view('welcome');
}
函数 saveformdata(请求 $request){
$client = new Client();
$data = [];
$url = $request->url; //getting value from ajax $url = $request->url;
$wp = $url.'/'.'wp-admin';
$website = $client->request('GET', $url);
$html = $website->html();
//Check if cms is wordpress
$cms = '';
if($this->isWordPress($wp, $html) == 'WordPress'){
$cms = 'WordPress';
$data['cms'] = 'WordPress';
}
return view('process-url', compact('data'));
}
查看刀片:process-url.blade.php
@foreach($data as $student)
{{$student->cms}}
@endforeach
首页视图刀片:welcome.blade.php
<div class="display-content alert-success" >
@include('process-url')
</div>
application.js having ajax code
jQuery(document).ready(function(){
$(document).ajaxStart(function(){
$("#wait").css("display", "block");
});
$(document).ajaxComplete(function(){
$("#wait").css("display", "none");
});
jQuery('#ajaxsubmit').click(function(e){
e.preventDefault();
jQuery('.alert').show();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
}
});
jQuery.ajax({
url: 'process-url',
type: 'POST',
data: {
url: jQuery('#enter_url').val()
},
success: function(result){
console.log(result);
jQuery('.display-content').html(result.success).fadeIn(700);
// jQuery('.display- content').html(result.success).fadeIn(700).fadeOut(5000);
}});
});
});
请有人帮助我找出我做错了什么。我正在尝试将变量数据提交到 process-url 刀片视图,该视图路由到 web.php 上的 saveformdata() 。该错误发生在 process-url.blade.php 的 data 变量中。 saveformdata 函数的代码比我实际放在这里的代码要多,整个想法是它从抓取工具返回一个数据数组,我想将其显示在 process-urlblade 上的表格上
当然,当您尝试包含正在等待数组
$data
的刀片文件时,您会收到“未定义变量”错误,该数组仅在您点击路线时传递到视图process-url
。在 POST 请求后返回视图也是非常非常糟糕的做法。无论如何,要解决您的错误(因为这就是您真正想要的),您可以执行以下操作:
$data
传递到欢迎页面视图并将其从 process-url 视图中删除 function getfrontpage(){
return view('welcome', [
'data' => ['Balloon Fight', 'Donkey Kong', 'Excitebike']
]);
}
function saveformdata(){
return view('process-url');
}
$data
将
@include
<div class="display-content alert-success" >
@include('process-url', ['data' => $data])
</div>
您的错误现已消失。你的代码仍然没有意义,但这就是你想要的。
在第一个 URL 中,您显示一个欢迎刀片文件,它包括 process-url 不带数据变量的刀片
您应该在 getfrontpage 函数中传递数据变量,如 saveformdata 并且 include 指令将变量传递给子刀片
function getfrontpage(){
$data = ['Balloon Fight', 'Donkey Kong', 'Excitebike'];
return view('welcome', compact('data'));
}
和数据变量数组类型,学生将显示数组中的每个元素
@foreach($data as $student)
{{$student}}
@endforeach