简体   繁体   English

laravel中的ajax post

[英]ajax post in laravel

I know this may be a trivial question but I am just not able to get this ajax call to work.. 我知道这可能是一个琐碎的问题,但是我无法使此ajax调用正常工作。

View (html) 查看(html)

  <div class="col-sm-6 col-xs-3 pl0" style="margin-left: -5px;">
     <button class="btn btn-primary visible-xs" name="btn-callback"><i class="fa fa-arrow-right" aria-hidden="true"></i></button>
     <button class="btn btn-primary hidden-xs" name="btnCallback" id="btnCallback"><i class="fa fa-arrow-right" aria-hidden="true"></i> Instant Callback
    </button>
</div>

now I am placing a click event on btnCallback button 现在我在btnCallback按钮上放置一个click事件

JQuery code jQuery代码

$('#btnCallback').click(function () {
            var phone = document.forms["frm-callback"]["callphone"].value;
            if (phone.length != 10) {
                document.getElementById('errcallbackModal').innerHTML = "Enter 10 digit Phone number";
                return false;
            } else if (isNaN(phone)) {
                document.getElementById('errcallbackModal').innerHTML = "Please Enter only number";
                return false;
            } else {
                document.getElementById('errcallbackModal').innerHTML = "";

                var randomnum = Math.floor(100000 + Math.random() * 900000)
                randomnum = randomnum.toString().substring(0, 5);
                var fullNumber = '0091' + phone;

                url = '/ambulance/type2/sendOtp';
                data = {
                    Code: randomnum,
                    MobNumber: fullNumber,
                };

                $.ajaxSetup({
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                    }
                });

                console.log(fullNumber);
                $.ajax({
                    url: url,
                    data: data,
                    type: 'POST',
                    datatype: 'JSON',
                    success: function (response) {
                        if (response.status === true) {
                            console.log(response.message);
                            $('#myModalCallback').modal('toggle');
                        } else {
                            alert('Issue');
                        }
                    },
                    error: function (response) {
                        $('#errormessage').html(response.message);
                    }
                });
            }
        });
    </script>

web.php (routes) web.php(路由)

Route::post('/ambulance/type2/sendOtp', 'AmbulanceController@sendOtp');

Controller 调节器

public function sendOtp()
    {
        $code = Input::get('Code');
        $mobnum = Input::get('MobNumber');

        //set otp code in session to verify
//        session(['verifyOtp' => $code]);
//        ParseCloud::run('sendcode', ["Code" => $code, 'MobNumber' => $mobnum]);

        return Response::json(['status' => true, 'message' => 'OTP has been sent to your mobile number']);
    }

It's not entering the success callback. 它没有进入成功回调。 There is some trivial mistake with the code but I am not able to figure it out. 该代码有一些琐碎的错误,但我无法弄清楚。

Any assistance will be highly appreciated. 任何帮助将不胜感激。

I tried the below code and it worked .. hope it helps somebody 我尝试了下面的代码,它的工作..希望它可以帮助某人

$.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': '<?= csrf_token() ?>'
                }
            });

            $.ajax({
                url: '/ambulance/type2/sendOtp',
                data: {'Code': randomnum, 'MobNumber': fullNumber},
                type: 'POST',
                datatype: 'JSON',
                success: function (response) {
                    if (response.status === true) {
                        console.log('success');
                    } else {
                        document.getElementById('errcallbackModalOtp').innerHTML = "Some error occured .. Please try again later";
//                        $('#errcallbackModalOtp').html('Some error occured .. Please try again later');
                    }
                },
                error: function (response) {
                    document.getElementById('errcallbackModalOtp').innerHTML = response.message;
//                    $('#errcallbackModalOtp').html(response.message);
                }
            });

try passing the csrf token in the header (this will only work inside a blade.php file) 尝试在标头中传递csrf令牌(这仅在blade.php文件中有效)

also might be worth reading this http://engageinteractive.co.uk/blog/csrf-protection-with-ajax-and-laravel 也可能值得阅读此http://engageinteractive.co.uk/blog/csrf-protection-with-ajax-and-laravel

or researching laravel csrf with ajax 或使用Ajax研究laravel csrf

   $.ajax({
        url: url,
        headers: { 'csrftoken' : '{{ csrf_token() }}' },
        data: JSON.stringify(data),
        type: 'POST',
        datatype: 'JSON',
        contentType: 'application/json',
        success: function (response) {
            if (response.status === true) {
                console.log(response.message);
                $('#myModalCallback').modal('toggle');
            } else {
                alert('Issue');
            }
        },
        error: function (response) {
            $('#errormessage').html(response.message);
        }
    });

I wanted to just comment, but I can't, so please don't mark my answer as not useful. 我只想发表评论,但我不能发表评论,因此请不要将我的回答标记为无用。

You're being redirected and your controller does not give a redirect response. 您正在被重定向,您的控制器未给出重定向响应。 So maybe your route is wrapped into a middleware group redirecting in some cases? 因此,在某些情况下,也许您的路由包含在重定向的中间件组中了?

Add contentType & JSON.stringify() . 添加contentTypeJSON.stringify() Try code written below. 尝试下面编写的代码。

$.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });

            console.log(fullNumber);
            $.ajax({
                url: url,
                data: JSON.stringify(data),
                type: 'POST',
                datatype: 'JSON',
                contentType: 'application/json',
                success: function (response) {
                    if (response.status === true) {
                        console.log(response.message);
                        $('#myModalCallback').modal('toggle');
                    } else {
                        alert('Issue');
                    }
                },
                error: function (response) {
                    $('#errormessage').html(response.message);
                }
            });

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

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