情况如此:
在我的Laravel 4应用程序中,验证后,它会重定向到显示成功消息的同一页面。
工作正常。问题是页面很重,因此重定向过程需要3秒钟。
我想做的是显示没有重定向的消息。 为了节省再次加载页面所需的时间,并立即显示消息。
这是代码:
return Redirect::back()->with('message','<b>Congratulations! You have succesfully sent the email');
这就是问题:
可以获得相同的结果,即显示成功的消息,而无需重定向到同一页面? 如果是的话,怎么办呢?
非常感谢!
答案 0 :(得分:2)
我认为你只能用AJAX和Javascript来做,用ajax发送数据并用javascript显示信息
答案 1 :(得分:2)
常用方法是通过AJAX
进行验证。
通过不同的回复显示成功或失败的消息。
您可以使用原生javascript XmlHttpRequest
对象或jQuery $.ajax
函数......等等来执行AJAX。
您可以参考以下资源:
javascript XmlHttpRequest
对象:
http://mdn.beonex.com/en/DOM/XMLHttpRequest/Using_XMLHttpRequest.html
jQuery $.ajax
功能:
https://api.jquery.com/jQuery.ajax/
答案 2 :(得分:2)
扩展@ Chen-Tsu Lin回答一个完整的通用示例,适用于Laravel:
首先,您的代码应该在没有任何JavaScript的情况下运行,因此您需要扩展已有的内容。
制作一条路线听取ajax请求(发布或获取最适合你的方式):
Route::post('helpers/ajax',
array('as' => 'ajax', 'uses' => 'App\Controllers\AjaxController@someMethod')
);
使用jQuery,您将停止表单提交的默认功能并将其发送到您的ajax uri
$('#yourSubmitButton').on('click', function(e){
e.preventDefault(); // the form will not be submitted
//do whatever necessary to collect the data, or just serialize the form
var formdata = $('#yourForm').serialize();
//perhaps validate the data, if you need, and then send by ajax
$.ajax({
url:'helpers/ajax',
type:'POST', //or GET if you wish as long as its consistent with the route
data: formdata,
dataType:'json', //this is for the data you will receive from the controller
cache:false,
success:function(data){
//show the "mail send message and whatnot
},
error:function(jxhr){
//handle errors
} })
})
缺少的是控制器上的方法,接收发布数据,验证,处理和回显请求(很可能是json_encoded数组)。
还有一些特定于您的实施。