2017-03-02 27 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調用。