Jquery Validator和Laravel 4 ajax问题

时间:2013-09-29 05:50:57

标签: jquery ajax laravel

我正在尝试使用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和此错误

  

{ “错误”:{ “类型”: “的Symfony \元器件\ HttpKernel \异常\ NotFoundHttpException”, “消息”: “”, “文件”:“C:\用户\ Usuario \收存箱\公共\ sitios \ FUTBOL \厂商\ laravel \框架\ SRC \照亮\路由\ Router.php”, “行”:1429}}

有人知道是否有办法以路线识别的方式发送我的邮件参数?

谢谢!

1 个答案:

答案 0 :(得分: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 1 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');