当前位置: 首页 > 知识库问答 >
问题:

laravel 5.1 POST与ajax,得到错误。和GET一起做就行了

於宏大
2023-03-14

这是我的第一个laravel项目,我不知道问题出在哪里。

我找了几个小时,但没有任何帮助。

{!!csrf_field()!!} 在我的表单中,将发送_令牌数据

路线:

Route::post('/posts/create', [
    'middleware' => 'auth',
    "as" => 'post-create',
    "uses"=>'PostsController@create'
]);

Ajax:

 $.ajax({
     url:'{{route('post-create')}}',
     type:'POST',
     data:form.serialize()
 });

Ajax的返回:

Remote Address:[::1]:80
Request URL:http://localhost/domain/public/posts/create
Request Method:POST
Status Code:500 Internal Server Error

TokenMismatchException in VerifyCsrfToken.php line 53:
in VerifyCsrfToken.php line 53
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 54
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 118
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 86
at Kernel->handle(object(Request)) in index.php line 54

而且laravel标准用户注册也不起作用。登录时(两者都与post一起使用)。

我错过了什么?

编辑:有趣的是,如果我用提交按钮它到达控制器。所以我发现问题来自控制器:

$title=Input::post('title');

有“使用照明\支持\立面\输入;”线

EDIT2:$title=Input::post('title') $request-

但我不知道如何正确使用它,我明白了

Target [App\Http\Requests\Request] is not instantiable.

如果将'Request$Request'参数添加到控制器函数中,则出错。


共有3个答案

夏弘义
2023-03-14

您可以使用这个:
https://laravel.io/forum/11-14-2014-disabling-the-csrf-middleware-in-laravel-5

在这种情况下,您可以通过替换VerifyCsrfTokenclass来禁用使用新类的给定路由的csrf_令牌。

邓英卓
2023-03-14

在我的控制器中,我使用'$title=输入::文章('title');'而不是'$请求-

我必须创建请求类,我创建了App\Http\Requests\PostCreateRequest。

php artisan make:request PostCreateRequest

然后在控制器中

public function create(PostCreateRequest $request){
        print $request->input('title');
}

有效:)

葛念
2023-03-14

这里的问题是,Laravel看不到您的csrf令牌。首先在元描述中使用

<meta name="csrf-token" content="{{ csrf_token() }}">

然后在JQuery中使用

$.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
});

这应该能解决你的问题

http://laravel.com/docs/5.1/routing#csrf-保护

 类似资料:
  • 我要离开一个网站(https://realpython.com/how-to-make-a-discord-bot-python/#how-to-make-a-discord-bot-in-python)和我下面的步骤,但我一直得到一个错误msg Traceback(最近一次调用最后一次): File"C:\用户\Bryce.Persello346\Desktop\bot.py",第15行,cli

  • 我得到一个错误java。lang.OutOfMemoryError(无错误消息),同时生成我的项目的签名Android应用程序包(AAB)。这是完整的错误消息- ***任务“:app:signReleaseBundle”的执行失败。 执行com.android.build.gradle.internal.tasks.FinalizeBundleTask$BundleToolRunnablejava

  • 问题内容: 我一直遇到以下问题,我认为这可能是由于我的方法可能会被误导的事实,但是希望在您的帮助下我可以解决这个问题! 基本上,对于我的网站,我有一个搜索提供程序(已经付款了,所以我没有违反任何使用条款)。提交搜索表单后,我将被定向到显示结果的域。 尽管我可以自定义返回结果的外观,但是到目前为止,我可以接受这一点,并且永远不会使其完全适合我的网站的外观。 因此,我想,我将通过AJAXified G

  • 对于更快的构建,将Gradle守护程序的最大堆大小增加到超过3072 MB。 要在进程中运行dex,Gradle守护进程需要一个更大的堆。 要执行此操作,请设置org.gradle。项目gradle.properties中的jvmargs=-Xmx3072M。它目前大约有989MB。 有关更多信息,请参阅https://docs.gradle.org/current/userguide/build

  • 问题内容: 我正在尝试创建一个使用我的ID和密码登录到我的大学站点的python程序。这是登录的正式页面: https //webapp.pucrs.br/consulta/ 您可能会注意到,这两个字段分别命名为pr1和pr2。该页面使用POST发送数据。另外,加载页面时会下载一个cookie,它是一个JSESSIONID,其中包含一个随机值,据我所知,您必须返回POST方法的标头才能验证登录名。

  • 问题内容: 为什么AJAX中存在GET和POST请求,因为它无论如何都不会影响页面URL?通过将敏感数据传递到AJAX中的GET上,有什么区别呢? 问题答案: 您应该根据Web服务的要求使用正确的HTTP动词。 处理 Collection URI时,例如: GET :列出集合的成员,并带有其成员URI以便进一步导航。例如,列出所有待售汽车。 PUT :定义为“将整个集合替换为另一个集合”。 POS