首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止页面重装后重装

防止页面重装后重装
EN

Stack Overflow用户
提问于 2018-01-02 17:18:11
回答 1查看 2K关注 0票数 1

我正在执行帐户验证,其中的一部分是重新发送电子邮件验证。

叶片

代码语言:javascript
复制
<a href="/register/resend/{{ $objUser->id }}">@lang('localization.clickHere')</a>@lang('localization.toResendEmail')

路由/网络

代码语言:javascript
复制
Route::get('register/resend/{id}','Auth\VerificationController@resend');

控制器

代码语言:javascript
复制
public function resend($id, Request $request)
{   
    $user = User::where('id',$id)->firstOrFail();
    Mail::to($user->email)->queue(new ConfirmRegistration($user));

    $messenger = new Messenger($user);
    $messenger->sendSuccess(__(trans('localization.emailSentSuccessfully')));

    return back();
} 

我遇到的问题是,每当触发href时,页面就会重新加载(正如预期的那样),这会导致Controller发送的消息立即消失。

是否有一种方法可以防止页面重新加载,但仍然触发route?我尝试添加onclick="return false;",但这似乎阻止了resend函数的运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-02 17:34:04

为什么不使用Ajax调用呢?

HTML:

代码语言:javascript
复制
<a href="javascript:void(0)" onclick="mailme(this)" user-id="{{ $objUser->id }}">@lang('localization.clickHere')</a>@lang('localization.toResendEmail')

路由:

代码语言:javascript
复制
Route::get('register/resend','Auth\VerificationController@resend');

控制器:

代码语言:javascript
复制
public function resend(Request $request)
{   
    $user = User::where('id',$request->id)->firstOrFail();
    Mail::to($user->email)->queue(new ConfirmRegistration($user));

    $messenger = new Messenger($user);
    $messenger->sendSuccess(__(trans('localization.emailSentSuccessfully')));

    return response()->json('success');
} 

JS (无JQuery):

代码语言:javascript
复制
mailme = function(obj){
  var userID = obj.getAttribute('user-id')
  var xhttp;
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      console.log(this.responseText);
    }
  };
  var params = JSON.stringify({ id: userID });

  xhttp.setRequestHeader("Content-type", "application/json; charset=utf-8");
  xhttp.setRequestHeader("Content-length", params.length);
  xhttp.setRequestHeader("Connection", "close");

  xhttp.open("GET", '{{url("settings/register/resend")}}', true);

  xhttp.send(params);
}

JS (JQuery):

代码语言:javascript
复制
mailme = function(obj){
    var userID = $(obj).attr('user-id')
    $.ajax({
        type : 'Get',
        data : {
            id: userID
        },
        url : '{{url("settings/register/resend")}}',
        dataType : 'json',
        success: function(data){
            console.log(data)
        }
    });
}

这样,您将触发该函数,而不需要重新加载页面将请求发送到服务器。请求通过xhttp发送。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48065172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档