POST 400错误,ajax请求

时间:2017-03-26 04:12:03

标签: javascript php ajax

为什么我不能保存,我得到400(错误请求), 并且在标题响应中我得到CSRF令牌无法验证。

 $(document).ready(function() {

            $("a#copylink").click(function (e) {
                e.preventDefault();
                var data = $('#campaign-form').serialize();

                $.ajax(
                    {
                        contentType: "application/json; charset=utf-8",
                        dataType: 'json',
                        method: 'POST',
                        url: 'campaignsave',
                        data: data,
                        success: function(data){
                            alert(data);
                        }
                    }
                )
                    });
            });

在后端:

public function actionCampaignSave()
    {
        var_dump($_POST);

    }

3 个答案:

答案 0 :(得分:1)

你可以在你的ajax调用中传递[headers]参数。

$.ajax({
    url : 'campaignsave',
    method : 'POST',,
    headers : {
        'X-CSRF-TOKEN' : $('input[name="token"]').val()
    }
    dataType : 'json',
    data : data,
    success : function(response) {
        console.log(response);
    }
});

请确保您已放置{!!你的[view]刀片模板上的csrf_field()!!}附加$(输入[name =" token"); html标记获取令牌值以获取CSRF令牌。希望这有帮助

答案 1 :(得分:0)

试试这可能会对你有所帮助

 $.ajax({
                    type: "POST",
                    url: 'campaignsave',
                    data: {test : data},
                    success: function(data) {
                         alert(data);
                    }
                });

答案 2 :(得分:0)

使用ajax上的headers属性传递csrf令牌

$.ajax({
  contentType: "application/json; charset=utf-8",
  dataType: 'json',
  method: 'POST',
  url: 'campaignsave',
  headers: { 'X-CSRF-TOKEN': 'token' }
  data: data,
  success: function(data){
      alert(data);
  }
});