使用Ajax发送Laravel 5的密码重置链接

4

我有这段代码:

jQuery.ajax({
    type:"POST",
    url:"/password/email/",
    data:{
        _token: jQuery("#forgotPasswordContainer input[name='_token']").val(),
        email: email
    },
    dataType:'json',
    beforeSend:function(){

    },
    success:function(data){

    },
    complete:function(){

    }
});

看起来它似乎什么也没做。

当我检查firebug时,我得到一个包含/password/email页面的html页面。

我猜我需要修改发送密码重置链接的方式。

有人可以帮帮我吗?

非常感谢您的帮助!

谢谢!


你的 PHP 脚本是什么? - Harigovind R
@HarigovindR 这是 Laravel 在重置密码时的默认链接。因此,当您检查 PasswordController.php 文件时,PHP 代码是相同的。 - PinoyStackOverflower
2个回答

5

好的,我通过在我的PasswordController.php中添加以下内容解决了这个问题。

public function getEmail(Request $request)
{
    $this->validate($request, ['email' => 'required|email']);

    $response = $this->passwords->sendResetLink($request->only('email'), function($m)
    {
        $m->subject($this->getEmailSubject());
    });

    switch ($response)
    {
        case PasswordBroker::RESET_LINK_SENT:
            return[
                'error'=>'false',
                'msg'=>'A password link has been sent to your email address'
            ];

        case PasswordBroker::INVALID_USER:
            return[
                'error'=>'true',
                'msg'=>"We can't find a user with that email address"
            ];
    }
}

我不确定这是否有效,但对我来说有效。希望能帮到他人。
谢谢!

2

Laravel 5.2

如果您想自定义或更改通过AJAX发送的POST URL,这里是完整的答案:

ajax.js:

jQuery.ajax({
    type:"POST",
    url:"/user/password/reset",
    data:{
        _token: jQuery("#forgotPasswordContainer input[name='_token']").val(),
        email: email
    },
    dataType:'json',
    beforeSend:function(){

    },
    success:function(data){

    },
    complete:function(){

    }
});

routes.php:

Route::post('user/password/reset', [
      'uses'         => 'Controller_name@index'
]);

App/Http/Controllers/Controller_name.php:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;

use Illuminate\Contracts\Auth\PasswordBroker;

class Controller_name extends Controller
{
    public function index(Request $request, PasswordBroker $passwords)
    {
        if( $request->ajax() )
        {
            $this->validate($request, ['email' => 'required|email']);

            $response = $passwords->sendResetLink($request->only('email'));

            switch ($response)
            {
                case PasswordBroker::RESET_LINK_SENT:
                   return[
                       'error'=>'false',
                       'msg'=>'A password link has been sent to your email address'
                   ];

                case PasswordBroker::INVALID_USER:
                   return[
                       'error'=>'true',
                       'msg'=>"We can't find a user with that email address"
                   ];
            }
        }
        return false;
    }
}

resources/views/

创建一个新目录auth > emails > password.blade.php用于电子邮件模板:

Click here to reset your password .<br />
<a target="_blank" href="{{ url('password/reset', $token).'?email='.urlencode($user->getEmailForPasswordReset()) }}">Click to Reset Password</a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接