【问题标题】:Laravel 5.3 and Parsley remote validationLaravel 5.3 和 Parsley 远程验证
【发布时间】:2016-12-17 05:56:56
【问题描述】:

我尝试使用欧芹远程验证注册表单的电子邮件和用户名。我总是收到消息:

public/checkUserName?username=tester 405 (Method Not Allowed)

这是我的代码:

输入:

<input data-parsley-remote="{{ route('checkUserName') }}"  data-parsley-remote-message="Der Username ist bereits vergeben!" data-parsley-remote-options='{ "type": "POST", "dataType": "jsonp", "data": {_token: CSRF_TOKEN, "UserName": "username" } }'

路线:

Route::post('/checkUserName', [
   'uses' => 'UserController@checkUserName',
   'as' => 'checkUserName'
]);

用户控制器:

public function checkUserName(Request $request)
{        
    if(user::where('UserName','=',$request->input('UserName'))->exists()){
           return response::json('exists', 404);
        }else{
           return response::json('not exists', 200);
        }
}

【问题讨论】:

    标签: json laravel parsley


    【解决方案1】:

    Laravel抛出错误405 (Method Not Allowed)是因为请求方法GET不允许处理为POST注册的路由。

    首先,我不熟悉Parsley,但是在观察了您的代码后,我发现,您已经设置了parsley 以使用AJAX 方法发送AJAX 请求,但是数据类型设置为jsonp

    // Extracted from the question
    data-parsley-remote-options='{
        "type": "POST",
        "dataType": "jsonp",
        "data": {_token: CSRF_TOKEN, "UserName": "username" }
    }'
    

    在这种情况下,jsonp 无法使用 POST 方法,因为它发送了一个 GET 请求(使用脚本标签...),因此,您的路线找不到,因为您已经注册了路线作为POST

    所以,这是因为请求方法 POST 的数据类型 (jsonp) 不正确。我敢肯定,Parsely 正在发送 GET 请求而不是 POST 请求,因为 dataType:jsonp

    因此,您可以在浏览器检查器中检查network tab 以找出正在发送的请求方法,您应该使用Route::get() 注册路由或将dataType 更改为其他内容,可以是@ 987654344@,但您应该查看Parsely 文档以了解可用的数据类型。

    【讨论】:

      猜你喜欢
      • 2014-10-25
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多