Ajax调用Laravel Route

时间:2016-02-15 14:56:22

标签: ajax laravel post upload routes

如何在Ajax中正确调用Laravel Route或Controller?

出现错误并说:

  

路线[product / create]未定义。 (视图:   C:\ XAMPP \ htdocs中\ laravel \资源\意见\ jsBlade \ logoInput.blade.php)   (视图:   C:\ XAMPP \ htdocs中\ laravel \资源\视图\ 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']);
    });

});

我的Ajax:     

$("#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提供此错误消息:

  

SyntaxError:JSON.parse:第1行第1列的意外字符   JSON数据。

3 个答案:

答案 0 :(得分:2)

只需Ajax到这条路线的网址:

这是我的路线:

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

这是我的ajax电话:

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

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

答案 1 :(得分:1)

更改此部分

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

到这个

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

并在ajax

中的标头中添加csrf标记
headers: {
    'X-CSRF-Token': '{{ csrf_token() }}',
},

答案 2 :(得分:0)

不要使用ajax 方法类型路由方法类型

以下示例

我的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');