如何在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数据。
答案 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');