Javascript 如何在全局js中使用ajax?

Javascript 如何在全局js中使用ajax?,javascript,jquery,ajax,laravel,laravel-5.3,Javascript,Jquery,Ajax,Laravel,Laravel 5.3,我的看法是: <input type="file" style="display: none" id="test"> var _token = $('input[name="_token"]').val(); console.log(_token); $('#test').on("change", function(){ data = new FormData(); $.ajax({ url: window.Laravel.baseUrl+'/pr

我的看法是:

<input type="file" style="display: none" id="test">
var _token = $('input[name="_token"]').val();
console.log(_token);
$('#test').on("change", function(){ 
    data = new FormData();
    $.ajax({
        url: window.Laravel.baseUrl+'/product/addImage',
        type: "POST",
        data: { data: data, _token: _token },
        enctype: 'multipart/form-data',
        processData: false,  // tell jQuery not to process the data
        contentType: false   // tell jQuery not to set contentType
    }).done(function(data) {
        console.log(data);
    });
});
Route::post('product/addImage', 'ProductController@addImage');
public function addImage(Request $request)
{ 
    dd('test');
    // dd($request->all());
}
我的路线是这样的:

<input type="file" style="display: none" id="test">
var _token = $('input[name="_token"]').val();
console.log(_token);
$('#test').on("change", function(){ 
    data = new FormData();
    $.ajax({
        url: window.Laravel.baseUrl+'/product/addImage',
        type: "POST",
        data: { data: data, _token: _token },
        enctype: 'multipart/form-data',
        processData: false,  // tell jQuery not to process the data
        contentType: false   // tell jQuery not to set contentType
    }).done(function(data) {
        console.log(data);
    });
});
Route::post('product/addImage', 'ProductController@addImage');
public function addImage(Request $request)
{ 
    dd('test');
    // dd($request->all());
}
我的控制器是这样的:

<input type="file" style="display: none" id="test">
var _token = $('input[name="_token"]').val();
console.log(_token);
$('#test').on("change", function(){ 
    data = new FormData();
    $.ajax({
        url: window.Laravel.baseUrl+'/product/addImage',
        type: "POST",
        data: { data: data, _token: _token },
        enctype: 'multipart/form-data',
        processData: false,  // tell jQuery not to process the data
        contentType: false   // tell jQuery not to set contentType
    }).done(function(data) {
        console.log(data);
    });
});
Route::post('product/addImage', 'ProductController@addImage');
public function addImage(Request $request)
{ 
    dd('test');
    // dd($request->all());
}
执行时,控制台选项卡存在如下错误:

<input type="file" style="display: none" id="test">
var _token = $('input[name="_token"]').val();
console.log(_token);
$('#test').on("change", function(){ 
    data = new FormData();
    $.ajax({
        url: window.Laravel.baseUrl+'/product/addImage',
        type: "POST",
        data: { data: data, _token: _token },
        enctype: 'multipart/form-data',
        processData: false,  // tell jQuery not to process the data
        contentType: false   // tell jQuery not to set contentType
    }).done(function(data) {
        console.log(data);
    });
});
Route::post('product/addImage', 'ProductController@addImage');
public function addImage(Request $request)
{ 
    dd('test');
    // dd($request->all());
}
POST 500(内部服务器错误)

在“网络”选项卡上存在如下错误:

<input type="file" style="display: none" id="test">
var _token = $('input[name="_token"]').val();
console.log(_token);
$('#test').on("change", function(){ 
    data = new FormData();
    $.ajax({
        url: window.Laravel.baseUrl+'/product/addImage',
        type: "POST",
        data: { data: data, _token: _token },
        enctype: 'multipart/form-data',
        processData: false,  // tell jQuery not to process the data
        contentType: false   // tell jQuery not to set contentType
    }).done(function(data) {
        console.log(data);
    });
});
Route::post('product/addImage', 'ProductController@addImage');
public function addImage(Request $request)
{ 
    dd('test');
    // dd($request->all());
}
VerifyCsrfToken.php第68行中的令牌不匹配异常:

如何解决错误


是否可以将ajax放在全局js中?

您可以通过两种方式解决此问题:

你可以用

<meta name="csrf-token" content="{{ csrf_token() }}" /> // add this under head tag
And before Ajax call add this:-
$.ajaxSetup({
    headers:
    {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

希望有帮助

您可以通过两种方式解决此问题:

你可以用

<meta name="csrf-token" content="{{ csrf_token() }}" /> // add this under head tag
And before Ajax call add this:-
$.ajaxSetup({
    headers:
    {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

希望有帮助

记住将文件添加到数据中

data = new FormData();
data.append("test", $("#fileInput")[0].files[0])

记住向数据中添加文件

data = new FormData();
data.append("test", $("#fileInput")[0].files[0])

参考资料:@eeya,看看我的问题。我必须按照参考资料更新它。但都是一样的。而当I
console.log(_-token)时,令牌existReference:@eeya,看看我的问题。我必须按照参考资料更新它。但都是一样的。而当I
console.log(_-token)时
,与第一种方法类似,自从我启动laravel以来,我一直在***.blade.php内的脚本标记中定义_标记。那似乎太多了cleaner@kunal,我先试试你。它起作用了。没有错误。但是当我添加
dd($\u文件)
在addImage方法中,响应显示数组为空,如下所示:
[]
。它应该显示一组照片吗uploaded@TrendingNews因为您的表单数据是空的,所以在将表单数据发送给控制器之前,您需要将其附加到表单数据中感谢您的帮助,伙计们,我们正在帮助您!与第一种方法非常相似,自从我启动laravel以来,我一直在***.blade.php内的脚本标记中定义_标记。那似乎太多了cleaner@kunal,我先试试你。它起作用了。没有错误。但是当我添加
dd($\u文件)
在addImage方法中,响应显示数组为空,如下所示:
[]
。它应该显示一组照片吗uploaded@TrendingNews因为您的表单数据是空的,所以在将表单数据发送给控制器之前,您需要将其附加到表单数据中感谢您的帮助,伙计们,我们正在帮助您!