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 运行时,您最终(就像萤火虫转储一样)使用以下网址:

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

现在注意 url 12之间的区别。第一个将电子邮件值作为 url 的一部分。第二个将电子邮件值作为查询字符串的一部分。

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 回答