繁体   English   中英

在laravel 5.3中使用Ajax

[英]Ajax use in laravel 5.3

我有点解决。 我正在尝试使用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)

问题是,我使用mailgun sandbox account ,因此我只能当我使用发送邮件laravel appauth scaffold包括与auth scaffold的应用程序将允许作为mailgun sandbox account不发送任何效应初探。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM