我正在尝试使用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}}
有人知道是否有办法以路线识别的方式发送我的邮件参数?
谢谢!
答案 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');