0

Jquery Validator を使用して laravel 4 でフォームを検証しようとしていますが、電子メールのリモート検証を実行できない唯一のことです。

ブラウザで次のことを試しました

http://example.com/validacion/email/info@info.com 

そして、私が望む結果を(jsonで)取得します。

//Routes.php 
Route::get('validacion/email/{email}', 'ValidatorController@getValidacionEmail');

//In my JS the rule of email is
         email: {
            required: true,
            email: true,
            remote: {
                url: "/validacion/email/",
                type: "get",
                data: {
                    email: "akatcheroff@gmail.com"
                },
                complete: function(data) {
                    if (data.responseText !== "true") {
                        alert(data.respuesta);
                    }
                }
         }

そして、Firebugを使用すると、この場所を取得します

http://example.com/validacion/email/?email=akatcheroff%40gmail.com

と 301 コード、その後 500 とこのエラー

{"error":{"type":"Symfony\Component\HttpKernel\Exception\NotFoundHttpException","message":"","file":"C:\Users\Usuario\Dropbox\Public\sitios\futbol\vendor \laravel\framework\src\Illuminate\Routing\Router.php","line":1429}}

ルートがそれを認識する方法で私のメールパラメーターを送信する方法があるかどうか、誰かが知っていますか?

ありがとう!

4

1 に答える 1

3

問題

指定したルートは、次のvalidacion/email/{email}ようなルートを処理します。

(1) http://mysite.com/validacion/email/info@info.com (Firefox で試したのと同じです。)

ajax を実行すると、(firebug がダンプしたのと同じように) 次のような URL が表示されます。

(2)http://mysite.com/validacion/email/?email=info@info.com

URL 12の違いに注目してください。最初のものには、URL のセグメントとして電子メールの値があります。2 つ目は、クエリ文字列の一部として電子メールの値を持っています。

Laravel がスローするエラーは、ルーターが URL に一致するハンドラーを見つけられなかったことを示しています。

ソリューション

これは、JavaScript を変更することで解決できます。

remote: {
    url: "/validacion/email/" + "info@info.com",
    type: "get"
}

クエリ文字列から電子メールを削除し、パスに追加します。

または、PHP ルートを変更することで解決できます。

Route::get('validacion/email', 'ValidatorController@getValidacionEmail');

次に、getValidacionEmail次を使用してクエリ文字列から電子メールを取得できます。

$email = Input::get('email');
于 2013-09-29T09:48:11.853 に答える