如何修复未定义变量:laravel视图上的数据



我正试图将变量与数据从函数发送到laravel首页视图,我得到未定义的变量:数据(视图:C:xampphtdocslaravelprojectresourcesviewsprocess-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 $ 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);
}});
});
});

谁来帮我找出我做错了什么。我试图将变量数据提交到路由到web.php上的saveformdata()的process-url刀片视图。错误发生在process-url.blade.php的data变量处。saveformdata函数比我在这里写的代码要多整个想法是它从抓取工具返回数据数组我想在process-url blade

上的表上显示这些数据

当然,当你试图包含一个等待数组$data的刀片文件时,你会得到未定义变量错误,当你击中路由process-url时,它只传递给视图。此外,在POST请求后返回视图是非常非常糟糕的做法。无论如何,要解决您的错误(因为这是您实际想要的),您可以执行以下操作:

  1. $data传递到欢迎页面视图并将其从进程url视图中删除
function getfrontpage(){
return view('welcome', [
'data' => ['Balloon Fight', 'Donkey Kong', 'Excitebike']
]); 
}
function saveformdata(){
return view('process-url');
}
  1. 通过@include
  2. $data数组从欢迎视图传递到进程url视图
<div class="display-content alert-success" >
@include('process-url', ['data' => $data])
</div>

你的错误现在消失了。你的代码仍然没有意义,但这是你想要的。

在第一个URL中显示一个欢迎刀片文件,它包括process-url刀片不带数据变量

你应该在getfrontpage函数中传递数据变量,比如saveformdatainclude指令将变量传递给子blade

function getfrontpage(){
$data = ['Balloon Fight', 'Donkey Kong', 'Excitebike'];

return view('welcome', compact('data'));
}

和数据变量数组类型,学生将显示数组

中的每个元素
@foreach($data as $student)
{{$student}}
@endforeach

最新更新