我有多个带有标题的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中尝试过它,但我认为问题不在于兼容性,因为其他脚本运行正常。
任何解决方法?我四处寻找解决方案,但没有运气。
答案 0 :(得分:0)
$.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');
}
});