我认为这段代码有很多错误。我需要的是创建一个表单,执行 XHR 提交到 Controller ,获取数据,发送到模型,检查验证,使用验证输出返回到 Controller ,然后发送到 View 消息“错误或成功”
routes.php
Route::get('checkValidationEmail', 'HomeController@checkValidationEmail');
<?php
echo Form::open(array('url' => 'checkValidationEmail', 'class' => 'form_notify'));
echo Form::text('Email', Input::old('Email'), array('placeholder'=>'Email', 'class' => 'hg'));
echo Form::close()
?>
<a href="#" class="send_email"> Notify Me!</a>
好的,这工作正常,接下来,问题开始了。
AJAX
<script>
$(function () {
$(".send_email").click(function () {
email = $('.hg').val();
$.ajax({
type: "POST",
url: 'checkValidationEmail', //what is the correct url?
data: {
email: email
}
}).done(function (msg) {
alert(msg);
});
});
});
</script>
500 错误:
{"error":{"type":"Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException","message":"","file":"C:\\VertrigoServ\\www\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\Router.php","line":1439}}
Controller
class HomeController extends BaseController {
public function checkValidationEmail() {
//how to get the data from form and pass to the model, more exactly validate($input)
if ($validation) {
return true;
}
else {
return 'incorrect email'; //how send this message to the view?
}
}
}
型号
class Home extends Eloquent {
protected $table = 'emails';
public function validate($input) {
//validations
}
}
最佳答案
在您的 route ,您将 checkValidationEmail
定义为 GET
请求,并且从您的 ajax 中,您尝试将其作为 POST
请求访问。所以这将抛出MethodNotAllowedHttpException
。所以你必须改变你的路线,
Route::get('checkValidationEmail', 'HomeController@checkValidationEmail');
至,
Route::post('checkValidationEmail', 'HomeController@checkValidationEmail');
或者,
Route::any('checkValidationEmail', 'HomeController@checkValidationEmail');
关于php - Laravel 的 ajax 演示,一步一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19127944/