2017-03-02 35 views
0

我尝试发送一个参数与URL到laravel 5.2中的ajax服务器,但当url的长度变得超过5000字符我面临的错误,在路由中找不到Http 这里是我的Ajax代码:laravel 5.2不能通过ajax发送大字符串,并得到方法

$.ajax({ 
    url: '/uploadQuestionMod5/', 
    type: 'GET', 
    data: {_token: CSRF_TOKEN , jcategory2:jcategory2 , jquestionText:jquestionText , jkind:jkind}, 
    dataType: 'JSON', 
    success: function (data) { 

    } 
}); 

和我的控制器:

$jcategory2 = $request['jcategory2']; 
$jquestionText = $request['jquestionText']; 
$jkind = $request['jkind']; 

$category2 = json_decode($jcategory2); 
$questionText = json_decode($jquestionText); 
$kind = json_decode($jkind); 

$now = date("Y-m-d H:i:s"); 

$insertquestion = DB::table('questionsInfo')->insert(
    ['userId' => $userId ,'categoryId' => $category2 ,'questionKind' => $kind ,'questionText' => $questionText , 'questionFileUrl' => null ,'date' => $now] 
); 

我试图找到URL的大小限制在GET方法请帮我谢谢:)

+1

将您的方法从GET更改为POST。并接受来自服务器的POST方法(路由到支持post方法)并通过ajax进行POST调用。 '输入:'GET''不能输入大量数据。 – webDev

+0

我用过,但我看到MethodNotAllowedHttpException错误,我改变方法发布在路由adn处理token_miss_match但仍然有错误 –

+0

是啊这就是为什么我说改变你的路线,让你的路线可以支持后期的方法。 '/ uploadQuestionMod5 /'这是你的路线。我将为您发布代码 – webDev

回答

0

快速简单的解决方案尝试使用AJAX POST而不是GET方法。
让你的AJAX职位和路由文件(/App/Http/routes.php)变更路线(/ uploadQuestionMod5 /)作为

Route::match(['get', 'post'],'/uploadQuestionMod5', [ 
    'uses'=>'[email protected]' 
]); 

注意:这条线路将同时接受getpost Ajax请求。

如果你只能做后阿贾克斯那么你的路线是这样的:

Route::post('/uploadQuestionMod5', '[email protected]'); 

这条路线将接受post要求从Ajax调用或任何toher源端(Client)正在添加

更新:令牌不匹配错误意味着以下内容
1.您错过了通过AJAX发布提交CSRF令牌的字段。
2.令牌可能已经更改,但是您没有刷新页面,只是一次又一次地发出Ajax请求。
看来你正在提交你的CSRF_TOKEN,所以刷新页面,然后再试一次,使ajax调用。