Проверка формы Laravel 5.4 выдает ошибку на iphone, но не на ноутбуке - PullRequest
0 голосов
/ 16 апреля 2019

Я занимаюсь разработкой веб-приложения на Laravel 5.4.У меня есть контактная форма, которая отправляется через Ajax.Все отлично работает на моем локальном компьютере, но когда я тестирую его на своем iphone, я получаю сообщение об ошибке «Формат неверен», когда я набираю сообщение с апострофом (т. Е. Как дела?) В поле темы или в поле сообщения,Если я набираю точно такой же текст на своем локальном компьютере, он проходит проверку.Я пробовал всех остальных сносных персонажей, а все остальное работает отлично.Проблема вызвана только апострофом.

Вот мой HTML:

<form id="contact_form" class="form-horizontal form-simple" method="POST" action="contact">
   {{ csrf_field() }}
   <label>Email</label>
   <input type="email" class="form-control form-control-lg input-lg" id="email" placeholder="Email" name="email">
   <label>Subject</label>
   <input type="text" class="form-control form-control-lg input-lg" id="subject" placeholder="Subject" name="subject">
   <label>Message</label>
   <textarea name="message" class="form-control form-control-lg input-lg" placeholder="Your Message" id="message"></textarea>
   <div id="contact_errors"></div>
   <input id="contact_button" type="submit" value="Submit" class="btn btn-main btn-lg float-xs-right">
</form>

Вот мой js-файл:

$(document).ready(function(){
    $('#contact_button').click(function(e){
        $('#loading').removeClass('hidden').show(0);
        e.preventDefault();
        $.ajax({
            url: 'contact',
            type: "post",
            data: $("#contact_form").serialize(),
            dataType: 'JSON',
            success: function (data) {
                console.log(data);
                window.location.href = APP_URL+"/";
            },
            error: function(data) {
                $('#loading').delay(1000).hide(0);
                console.log(data);
                if( data.status === 422 ) {

                    $errors = data.responseJSON;

                    errorsHtml = 
                    '<div class="alert alert-warning" role="alert"><h5>You Have Errors On The Form</h5><ul>';

                    $.each( $errors, function( key, value ) {
                        errorsHtml += '<li>' + value[0] + '</li>';
                    });

                    errorsHtml += '</ul></div>';

                    $( '#contact_errors' ).show().html( errorsHtml );
                }
            }
        });
    });
});

А вот мой метод контроллера:

public function store(Request $request) {

    $this->validate($request, [
        'email'     => 'required|email',
        'subject'   => 'required|regex:/^[a-zA-Z0-9\s\h\p{P} ]*$/',
        'message'   => 'required|regex:/^[a-zA-Z0-9\s\h\p{P} ]*$/',
    ]);

    $email     = request('email');
    $subject   = request('subject');
    $message   = request('message');

    $message = Message::create(compact('email', 'subject', 'message'));

    session()->flash('success', "Thanks, your message has been sent. We'll get back to you as soon as we can.");

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

Любые идеи о том, почему это происходит, будут высоко оценены.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...