Laravel 4:如何在不重定向的情况下显示消息?

时间:2014-03-07 12:16:31

标签: php html redirect laravel laravel-4

情况如此:

在我的Laravel 4应用程序中,验证后,它会重定向到显示成功消息的同一页面。

工作正常。问题是页面很重,因此重定向过程需要3秒钟。

我想做的是显示没有重定向的消息。 为了节省再次加载页面所需的时间,并立即显示消息。

这是代码:

return Redirect::back()->with('message','<b>Congratulations! You have succesfully sent the email');

这就是问题:

可以获得相同的结果,即显示成功的消息,而无需重定向到同一页面? 如果是的话,怎么办呢?

非常感谢!

3 个答案:

答案 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数组)。

还有一些特定于您的实施。