как показать флеш сообщение с ajax запросом на просмотр? - PullRequest
0 голосов
/ 26 декабря 2018

когда я добавляю текст в summernote, он сохраняется в базе данных и перезагружает страницу.Я хочу показать сообщение сверху после обновления страницы "Отправить успешно".Как я могу добавить флэш-сообщение с запросом ajax?Я разместил свой вид ajax и код контроллера.как я могу получить сообщение о просмотре ??

просмотр:

 @if (Session::has('error'))
    <div class="alert alert-danger">
        {{ Session::get('error') }}
    </div>
@endif
@if (Session::has('success'))
    <div class="alert alert-success">
        {{ Session::get('success') }}
    </div>
@endif

<div class="row">
    <div class="col-xl-12 col-md-12 col-sm-12">
        <div class="card">
            <div class="card-header">

                <h4 class="card-title">Contact Driver</h4>
                @if($successmessage = Session::get('allsuccess'))
                    <div class="alert alert-success alert-block" style="width:300px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>{{ $successmessage }} </strong>
                    </div>

                @endif
            </div>

Ajax:

     $.ajax({
            url: "{{url('/add_contact_driver')}}",
            type: 'POST',
            data: formData,
            dataType: 'json',
            contentType: false,
            processData: false,
            success: function (response) {
                console.log('response', response)
                window.location.reload();
            }, error: function (error) {
                console.log('create article error', error);
            }
        });

Контроллер:

     public function contactDriver(Request $request)
{

    $opn = $request->input('search_opn');
    $name = $request->input('search_name');
    $city = $request->input('search_city');
    $editor = $request->input('editor');
    $validation = Validator::make($request->all(), [
        'select_reason' => 'required'
    ]);
    if ($validation->fails()) {
        $response = (new ApiMessageController())->validatemessage($validation->errors()->first());
    } else {
        $contact = new ContactDriver();
        $contact->opn = $opn;
        $contact->name = $name;
        $contact->city = $city;
        $contact->text = $editor;
        $saveContact = $contact->save();

        if ($saveContact) {
            $response = (new ApiMessageController())->saveresponse("Send Successfully");
        } else {
            $response = (new ApiMessageController())->failedresponse(" Failed to send");
        }
    }
    return $response;

}

Ответы [ 4 ]

0 голосов
/ 26 декабря 2018

То, что вы можете сделать, это

    <div class="alert alert-danger" id="error-div" {{ Session::has('error') ? style="display:block" : style="display:none" }}>
        {{ Session::get('error') }}
    </div>

    <div class="alert alert-success" id="success-div" {{ Session::has('success') ? style="display:block" : style="display:none" }}>
        {{ Session::get('success') }}
    </div>

Установить ответ на div как

            success: function (response) {
                console.log('response', response)
                $('#success-div').show();
                $('#success-div').html(response);
            }, error: function (error) {
                console.log('create article error', error);
                $('#error-div').show();
                $('#error-div').html
            }
0 голосов
/ 26 декабря 2018

Есть 2 способа сделать это.

1) В случае, если вы хотите перезагрузить страницу, установите сообщение об успехе от самого контроллера, например:

Session::flash('success', 'This is a message!'); 

Тогдаполучить доступ к этому сообщению об успешном выполнении в файле представления, например:

2) Вернув сообщение из контроллера и просто отобразив его с помощью Jquery (в функции успеха Ajax).

$.ajax({
    url: "{{url('/add_contact_driver')}}",
    type: 'POST',
    data: formData,
    dataType: 'json',
    contentType: false,
    processData: false,
    success: function (response) {
        console.log('response', response)
        //window.location.reload();
        $("#YOUR MESSAGE DIV").html(response.message);//Assuming the response object contains the Variable as message.
    }, error: function (error) {
        console.log('create article error', error);
    }
});
0 голосов
/ 26 декабря 2018

Вы можете вернуть сообщение об ошибке / успехе, как это в контроллере

return response()->json(['status'=>'error','message'=>'Error Occured']);

или

return response()->json(['status'=>'error','message'=>'Succesfully Send']);

Теперь в вашем коде ajax,

Добавить окно сообщения об ошибке наajax call.

 $.ajax({
        url: "{{url('/add_contact_driver')}}",
        type: 'POST',
        data: formData,
        dataType: 'json',
        contentType: false,
        processData: false,
        success: function(result) {
              console.log(result);
              $('#message').html('');
              if(result.status=='success'){
                $('#message').append(
                  '<div class="alert alert-success alert-dismissable">'+
                    '<button type="button" class="close" data-dismiss="alert">'+
                        '<span aria-hidden="true">&times;</span>'+
                        '<span class="sr-only">Close</span>'+
                    '</button>'+
                    result.message+
                  '</div>'
                );
              }else{
                $('#message').append(
                  '<div class="alert alert-danger alert-dismissable">'+
                    '<button type="button" class="close" data-dismiss="alert">'+
                        '<span aria-hidden="true">&times;</span>'+
                        '<span class="sr-only">Close</span>'+
                    '</button>'+
                    result.message+
                  '</div>'
                );
              }
          },
          error: function(result){
              console.log(result);
              alert('Something went wrong');
          }
      });

Добавьте следующий html, где вы хотите отобразить ошибку,

<div id="message"></div>

Надеюсь, вы поймете.

0 голосов
/ 26 декабря 2018

Вы можете сделать это

 success: function (response) {
            console.log('response', response);
            $(".alert-success").css("display", "block");
            $(".alert-success").append("<P>This is a message");
        }

<div class="alert alert-success" style="display:none">
    {{ Session::get('success') }}
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...