【问题标题】:Ajax use in laravel 5.3在 laravel 5.3 中使用 Ajax
【发布时间】:2017-03-19 06:55:00
【问题描述】:

我有点想解决这个问题。我正在尝试使用 Ajax 提交表单。现在,当我在不创建laravel 默认auth scaffold 的情况下执行此操作时,它可以正常工作,但是如果添加auth scaffold 它会失败。我已尽我所能,但似乎无法提交。

这是我的代码: 控制器发送邮件--

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redirect;

use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;

class MailController extends Controller
{
    //
    public function index(Request $request)
      {


          if ($request->ajax()) {
              $validator = Validator::make($request->all(), [
                          'first_name' => 'required',
                          'last_name' => 'required',
                          'email' => 'required|email',
                          'mymessage' => 'required',
                          'g-recaptcha-response' => 'required|captcha',
              ]);

              if ($validator->fails()) {
                  return redirect()->back()
                                  ->withErrors($validator)
                                  ->withInput();
              } else {

                  // get input fields values
                  $data = [
                      'firstName' => $request->input('first_name'),
                      'lastName' => $request->input('last_name'),
                      'email' => $request->input('email'),
                      'mymessage' => $request->input('mymessage'),
                  ];

                  Mail::send('emails.email', $data, function ($message) {
                     official email
                      $message->to('xxxxxxxxx@gmail.com', 'My Name')->subject('Information');
                  });

                  return response()->json([
                              'responseText' => 'Mail was sent!'], 200);
              }
          } else {
              return View('fail')->render();
          }
      }
}

路线文件:

Route::get('/', function () {
    return view('welcome');
});

Route::post('/mail', [
    'as' => 'mail',
    'uses' => 'MailController@index'
]);

Auth::routes();

Route::get('/home', 'HomeController@index');

Ajax 代码:

$(document).ready(function() {

    var options = {
        beforeSubmit: validate,
        url: '/mail',
        data: $(this).serialize(),
        type: 'POST',
        dataType: 'json',
        clearForm: true,
        success: great,
        error: lost
    };

    $('#footer-form').ajaxForm(options);
});

function validate(formData, jgForm, options) {
    for (var i = 0; i < formData.length; i++) {
        if (!formData[i].value) {
            alert('Please enter a value for all fields');
            return false;
        }
    }
}

function great(responseText, statusText, formData) {
    // prevent multiple form submission
    $('#mail_btn').prop('disabled', true);
    // show alert on success
    $(".alert-success").prop("hidden", false);
    // remove mail error information if displayed
    $(".alert-info").prop("hidden", true);
    // reset google recaptcha
    grecaptcha.reset();

}

function lost(formData) {
    // prevent multiple form submission
    $('#mail_btn').prop('disabled', false);
    $(".alert-info").prop("hidden", false);
}

我的表单代码:

<div class="col-sm-6">
 <div class="footer-content" id="myfooter">
    {!! Form::open(['action' => 'MailController@index', 'method' => 'post', 'role' => 'form', 'id' => 'footer-form']) !!}
                        <div class="form-group has-feedback">
                            {!! Form::label('first_name', null, ['class' => 'sr-only']) !!}
                            {!! Form::text('first_name', null, ['class' => 'form-control', 'placeholder' => 'First Name']) !!}
                            <i class="fa fa-user form-control-feedback"></i>
                            @if($errors->has('first_name'))
                                {{ $errors->first('first_name') }}
                            @endif
                        </div>
                        <div class="form-group has-feedback">
                            {!! Form::label('last_name', null, ['class' => 'sr-only']) !!}
                            {!! Form::text('last_name', null, ['class' => 'form-control', 'placeholder' => 'Last Name']) !!}
                            <i class="fa fa-user form-control-feedback"></i>
                            @if($errors->has('last_name'))
                                {{ $errors->first('last_name') }}
                            @endif
                        </div>
                        <div class="form-group has-feedback">
                            {!! Form::label('email', null, ['class' => 'sr-only']) !!}
                            {!! Form::email('email', null, ['class' => 'form-control', 'placeholder' => 'Email address']) !!}
                            <i class="fa fa-envelope form-control-feedback"></i>
                            @if($errors->has('email'))
                                {{ $errors->first('email') }}
                            @endif
                        </div>
                        <div class="form-group has-feedback">
                            {!! Form::label('mymessage', null, ['class' => 'sr-only']) !!}
                            {!! Form::textarea('mymessage', null, ['class' => 'form-control', 'rows' => 8, 'cols' => 3, 'placeholder' => 'Message']) !!}
                            <i class="fa fa-pencil form-control-feedback"></i>
                            @if($errors->has('mymessage'))
                                {{ $errors->first('mymessage') }}
                            @endif
                        </div>
                        <div class="form-group has-feedback">
                            {!! app('captcha')->display() !!}
                        </div>

                        {!! Form::submit('Send', ['class' => 'btn btn-default', 'id' => 'mail_btn']) !!}

                        {!! Form::close() !!}
                        <div class="alert alert-success" id="mail_alert" role="alert" hidden>
                            Mail Sent!
                        </div>
                         <div class="alert alert-info" id="mail_info" role="alert" hidden>
                            Mail Sending Error!
                        </div>
                    </div>
                </div>

错误信息:

Failed to load resource: the server responded with a status of 401 (Unauthorized)

【问题讨论】:

    标签: php jquery ajax forms laravel-5


    【解决方案1】:

    问题是我使用的是mailgun sandbox account,因此当我使用laravel appauth scaffold 包含auth scaffold 时,我只能发送邮件,因为mailgun sandbox account 不允许发送任何回复。

    解决方案是使用常规的gmail 发送它,它按预期响应并且邮件通过了。

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 2017-02-19
      • 2017-06-04
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2019-06-14
      相关资源
      最近更新 更多