【问题标题】:Laravel get and post to an external php controller with ajaxLaravel 使用 ajax 获取并发布到外部 php 控制器
【发布时间】:2017-09-11 17:06:04
【问题描述】:

我正在开发 laravel 项目,我需要将 AJAX 发布到 laravel 中的自定义函数,并获得对我的自定义视图的响应。

我有提款机

  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. 在客户端/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 中回显它,我唯一不知道的是如何在 laravel 中发布和获取。

【问题讨论】:

  • vathelper 必须是控制器

标签: ajax laravel post get helper


【解决方案1】:

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

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 代码中使用位刀片变量

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

阅读更多关于刀片模板中的 PHP 变量here

【讨论】:

  • 通过ajax访问/vat时出现404是什么意思?
【解决方案2】:

您的代码中有些东西有点不对劲。

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

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

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

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 2016-11-17
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多