jQuery没有使用POST请求发送标头

时间:2014-06-04 15:18:53

标签: jquery django

我有多个带有标题的jquery脚本,它们都发送X-Requested-With': 'XMLHttpRequest,但其中一个类似的脚本没有发送此标题。

jQuery的:

$(document).ready(function(){
var form = $("#msg-form");
form.on('submit', function(event){
    event.preventDefault();

    $("#sent-message").text("sending...");
    $.ajax({
        url: form.attr('action'),
        type: form.attr('method'),
        data: { 
                'csrfmiddlewaretoken': '{{csrf_token}}',
                'sent-message': $("#sent-message").val()

        },

        success: function(response){
            ("#upd-change").html(response);
        },
        headers: {
                            'X-Requested-With': 'XMLHttpRequest'
                    }
    });
});
});

模板:

<form id="msg-form"  method="post" action="/send_message/{{r_user.id}}/{{from_user.id}}">
 {% csrf_token %}

 <div class="form-group">
  <div id="msg-send">
    <input type="text" name="sent-message" class="form-control" placeholder="please type message and press Enter to send"></input>
  </div>
 </div>
</form>

当我按回车键时,它会发送一个帖子请求但标题不包含X-Requested-With': 'XMLHttpRequest

我也尝试使用按钮提交此表单但结果相同。 问题是由于这种行为,is_ajax设置为false。我在firefox和IE中尝试过它,但我认为问题不在于兼容性,因为其他脚本运行正常。

任何解决方法?我四处寻找解决方案,但没有运气。

1 个答案:

答案 0 :(得分:0)

尝试使用$.ajax.beforeSend

$.ajax({
    url: form.attr('action'),
    type: form.attr('method'),
    data: { 
            'csrfmiddlewaretoken': '{{csrf_token}}',
            'sent-message': $("#sent-message").val()

    },
    success: function(response){
        ("#upd-change").html(response);
    },
    beforeSend: function(xhr){
        xhr.setRequestHeader('X-Requested-With': 'XMLHttpRequest');
    }
});