【问题标题】:Ajax call Laravel RouteAjax 调用 Laravel 路由
【发布时间】:2016-05-26 13:08:01
【问题描述】:

如何在我的 Ajax 中正确调用 Laravel 路由或控制器?

出现一个错误提示:

路线 [产品/创建] 未定义。 (看法: C:\xampp\htdocs\laravel\resources\views\jsBlade\logoInput.blade.php) (看法: C:\xampp\htdocs\laravel\resources\views\jsBlade\logoInput.blade.php)

我的路线如下所示:

# Middleware group if user is successfully logged in
Route::group(['middleware' => 'auth'], function ()
{
    Route::get('/home', ['as' => 'home', 'uses' => 'PageController@showHome']);

    # Product group
    Route::group(['prefix' => 'product'], function ()
    {
        Route::get('/', ['as' => 'indexProduct', 'uses' => 'ProductController@indexProduct']);
        Route::get('new', ['as' => 'newProduct', 'uses' => 'ProductController@newProduct']);
        Route::get('show/{productID}', ['as' => 'showProduct', 'uses' => 'ProductController@showProduct']);
        Route::get('edit/{productID}', ['as' => 'editProduct', 'uses' => 'ProductController@editProduct']);
        Route::post('create', ['as' => 'createProduct', 'uses' => 'ProductController@createProduct']);
        Route::post('update', ['as' => 'updateProduct', 'uses' => 'ProductController@updateProduct']);
        Route::delete('destroy', ['as' => 'destroyProduct', 'uses' => 'ProductController@destroyProduct']);
    });

});

我的阿贾克斯:

$("#input-logo").fileinput({
    uploadUrl: '{{route("product/create")}}',
    type: 'POST',
    allowedFileExtensions: ["jpg", "png", "gif", "jpeg"],
    allowedFileTypes: ['image'],
    headers: {
       'X-CSRF-Token': $('#_token').val(),
    }
}).on('filepreupload', function() {
    $('#kv-success-box').html('');
}).on('fileuploaded', function(event, data) {
    $('#kv-success-box').append(data.response.link);
    $('#kv-success-modal').modal('show');
});

</script>

控制器

<?php

namespace App\Http\Controllers;

use Input;
use App\Product;
use App\Companies;
use App\Http\Controllers\Controller;


class ProductController extends Controller
{
    public function createProduct()
    {
        $data = Input::all();

        $product = new Product;

        $product->fill($data);
        if($product->save())
        {
            return redirect()->route('root')->with('message','Success');;
        }
    }
}

Firefox 给出此错误消息:

语法错误:JSON.parse:第 1 行第 1 列的意外字符 JSON 数据。

【问题讨论】:

    标签: ajax laravel post upload routes


    【解决方案1】:

    改变这部分

    uploadUrl: '{{route("product/create")}}',
    

    到这里

    uploadUrl: '{{url("product/create")}}',
    

    并在 ajax 中将 csrf 令牌添加到您的标头

    headers: {
        'X-CSRF-Token': '{{ csrf_token() }}',
    },
    

    【讨论】:

    • 嗯,现在我收到另一条错误消息,内容如下:SyntaxError: Unexpected token <.>
    • Firefox 给了我一个与谷歌不同的错误:SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data.
    【解决方案2】:

    只需 Ajax 到路由的 URL,如下所示:

    这是我的路线:

    Route::post('users/send-file-temp',['uses'=>'UsersController@postSendFileTemp']);
    

    这是我的 ajax 调用:

    $.ajax({
        url: '/users/send-file-temp',
    });
    

    Ajax 会将请求发送到/users/send-file-temp,Laravel 会识别路由并将其定向到相应的控制器。

    【讨论】:

      【解决方案3】:

      不要使用你的 ajax 方法类型和你的 Route 方法类型

      以下示例

      我的 Ajax 代码

          $('#sendMsg').click(function(e){
          e.preventDefault(); 
          $.ajax({
              url: '{{url("R_E/users/sendMSG")}}',
              data: $("#form-signin").serialize(),
              type: "POST",
              headers: {
                  'X-CSRF-Token': '{{ csrf_token() }}',
              },
              success: function(data){
                  alert("okay");
      
              }, 
              error: function(){
                    alert("failure From php side!!! ");
               }
      
              }); 
      
              });
      

      我的路线代码

      Route::post('/users/sendMSG', 'RE\MainController@sendMSG');

      【讨论】:

        【解决方案4】:

        而不是 {{route("product/create")}} , 以下一个在 Laravel 8 中为我工作:

        !{route("product/create")}!
        

        【讨论】:

          猜你喜欢
          • 2019-07-10
          • 2017-10-08
          • 2018-03-18
          • 2017-11-27
          • 2017-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-07
          相关资源
          最近更新 更多