Laravel 使用 ajax 获取并 post 到外部 php 控制器

Laravel get and post to an external php controller with ajax

我正在处理 laravel 项目,我需要在 laravel 中制作 AJAX post 自定义函数,并获得对我的自定义视图的响应。

我有自动取款机

  1. /app/Http/VatHelperController.php

    <?php
    
    namespace App\Http\Controllers;
    
    use Request;
    
    use App\Http\Requests;
    
    use App\Http\Response;
    
    use Illuminate\Support\Facades\Input;
    
    class VatHelperController extends Controller
    {       
        public function recieve(){
            $data = '555';
            return View::make('clients.edit', $data);
        }
    }        
    
  2. 里面routes.php

     // Vatchecker get post
     Route::post('/vat', 'VatHelperController@receive');
     Route::get('/vat', 'VatHelperController@receive');
    
  3. 里面 clients/edit.blade.php

     <div class="row">
     <form>
     <input type="text" id="input-vat">
     <input type="submit" id="btn-test-submit">
     </form>
     <p>Result :</p>
     <p class="test-result"></p>
     </div>
    
     <script>
         $('#btn-test-submit').click(function(e){
             e.preventDefault();
             var vat_value = document.getElementById('input-vat').value;
             var url = "http://185.81.165.216/index.php/vat";
             if (vat_value !== "" && vat_value.length < 20){
                 $.ajax({
                     url: url,
                     type: 'POST',
                     data: vat_value,
                     dataType: 'json',
                     beforeSend: function(xhr){xhr.setRequestHeader('X-CSRF-TOKEN', $("#token").attr('content'));},
                     done: function(data){
                        $('.test-result').text('done');
                     },
                     error: function(){
                         $('.test-result').text("didnt");
                     }
                 })
                 $('.test-result').text(vat_value);
             }
             else if (vat_value.length > 20){
                 $('.test-result').text('Your entered value is to long. Max lenght 20 char.');
             }
             else{
                $('.test-result').text('You have to enter value.');
             }
                    $.get('index.php/vat', function(){
                 console.log('response');
             });
         });
     </script>
    

我的最终目标是制作表格并使用 post 将数据发送到 helper 中的函数并获得对 js 的响应,并在 table 中回显它,这是我唯一想不通的out 是如何 post 和进入 laravel.

你的代码中有些东西有点偏离。

  1. vathelper 看起来不像控制器。为了能够通过 HTTP 访问它,它必须是一个控制器。否则路由系统无法与之交互。

  2. 您不必自动加载 类。它们已经自动加载到 \App 命名空间中。

  3. clients.vat 是个奇怪的名字。它会让浏览器认为它可能正在访问一个 .vat 文件,不管它是什么。你应该叫它 /clients/vat

运行 在主项目目录中执行此命令:

php artisan make:controller VatHelperController

然后将其添加到 routes/web。php

Route::post('/vat', 'VatHelperController@receive');

然后将此函数添加到 VatHelperController:

public function receive (Request $request){

    // print all data sent
    print_r( $request->all() );
    // access particular data by:
    echo $request->input('name');

}

最后你可以在想要的视图文件中加入这段JS:

window.onload = funtion () {
    $.ajax({
      type: "POST",
      url: "/vat",
      data: {name:"YourName"},
      success: function() {},
      dataType: "json"
    });
}

您还可以在 JS 代码中使用一些 blade 变量,例如

data: {name: {{$php_var}} }

详细了解 blade 模板中的 PHP 个变量 here