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

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

我正在尝试将带有数据的变量从函数发送到 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 上的表格上

php laravel laravel-5 laravel-8
2个回答
0
投票

当然,当您尝试包含正在等待数组

$data
的刀片文件时,您会收到“未定义变量”错误,该数组仅在您点击路线时传递到视图
process-url
。在 POST 请求后返回视图也是非常非常糟糕的做法。无论如何,要解决您的错误(因为这就是您真正想要的),您可以执行以下操作:

  1. $data
    传递到欢迎页面视图并将其从 process-url 视图中删除
    function getfrontpage(){
        return view('welcome', [
           'data' => ['Balloon Fight', 'Donkey Kong', 'Excitebike']
        ]); 
    }

    function saveformdata(){
        return view('process-url');
    }
  1. 通过
    $data
    @include
  2. 数组从欢迎视图传递到 process-url 视图
<div class="display-content alert-success" >
    @include('process-url', ['data' => $data])
</div>

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


0
投票

在第一个 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
© www.soinside.com 2019 - 2024. All rights reserved.