Laravel 5.4表单验证在iPhone上引发错误,但在笔记本电脑上未引发

时间:2019-04-16 05:01:31

标签: php jquery iphone ajax laravel

我正在使用Laravel 5.4开发一个Web应用程序。我有一个通过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');
}

任何关于为什么发生这种情况的想法都将受到赞赏。

谢谢

0 个答案:

没有答案