laravel 5.2无法通过ajax和get方法发送大字符串

时间:2017-03-02 19:47:49

标签: php jquery ajax laravel-5.2

我尝试在laravel 5.2中使用ajax向url发送带参数的参数但是当url的长度变得超过5000时,我面临Http在路由中找不到的错误 这是我的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]
);

我试着在get方法中找到url大小的限制请帮助我谢谢:)

1 个答案:

答案 0 :(得分:0)

快速简便的解决方案尝试使用AJAX POST而不是GET方法。
制作您的AJAX帖子,并在路径文件 shortestRoute = (routeResults: google.maps.DirectionsResult): google.maps.DirectionsResult => { var shortestRoute: google.maps.DirectionsRoute = routeResults.routes[0]; var shortestLength = shortestRoute.legs[0].distance.value; for (var i = 1; i < routeResults.routes.length; i++) { if (routeResults.routes[i].legs[0].distance.value < shortestLength) { shortestRoute = routeResults.routes[i]; shortestLength = routeResults.routes[i].legs[0].distance.value; } } routeResults.routes = [shortestRoute]; return routeResults; } 中更改您的路线(/ uploadQuestionMod5 /)

(/App/Http/routes.php)

注意:此路线将同时接受Route::match(['get', 'post'],'/uploadQuestionMod5', [ 'uses'=>'YourController@method' ]); get ajax请求。

如果您只发布ajax,那么您的路线如下:

post

此路由将接受来自ajax呼叫或任何来源(客户端)的Route::post('/uploadQuestionMod5', 'YourController@method'); 请求发送

更新:令牌不匹配错误表示以下
 1.您错过了通过AJAX帖子提交CSRF令牌字段  2.令牌可能已经改变但你没有刷新你的页面,只是一次又一次地发出ajax请求。
您似乎正在正确提交post,因此请刷新页面并再次尝试拨打电话。