为什么ajaxSubmit会不会发送正确的Ajax请求使用X-要求,随着= XMLHtt prequest请求头 [英] Why ajaxSubmit does not send a correct ajax request with X-Requested-With=XMLHttpRequest request header

查看:198
本文介绍了为什么ajaxSubmit会不会发送正确的Ajax请求使用X-要求,随着= XMLHtt prequest请求头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用Google搜索了很多,但我没有找到任何解决办法

我使用 jqueyUI对话框和的 ajaxSubmit会发送通过模态对话框和Ajax的数据(文件等)。 我的问题很简单:数据是否正确发送到服务器,而不是通过AJAX即没有请求头属性 X-要求,随着= XMLHtt prequest

所以,我该怎么办错了还是有这方面有任何kwnown问题?

下面是我的code一些片断。

  $('#照片DLG)。对话框({
  模式:真正的,
  开放:函数(){$(本).load(/ mywebsite / mydialog);}
  //进口<形式ID =formid方法=邮报名称=updatePhotoENCTYPE =的multipart / form-data的> ...
  按钮:{
    取消:函数(){$(本).dialog('接近');},
    提交:函数(){
               $('#formid')。ajaxSubmit会({
                   数据类型:JSON,
                   成功:功能(数据){$('#照片DLG)对话框(亲密); })
               });}
  });
 

顺便说一句,我曾尝试选项,如:

 标题:{X-要求,用:XMLHtt prequest} //或者
数据:{X-要求,用:XMLHtt prequest} //或者
beforeSend:功能(xhrObj){xhrObj.setRequestHeader(X-要求,用,XMLHtt prequest)}
 

没有成功

更新: 您可以复制/粘贴以下code到HTML页面,并通过萤火尝试自行(=>无X请求,使用包头)

 <!DOCTYPE HTML PUBLIC -  // W3C // DTD HTML 4.01 // ENhttp://www.w3.org/TR/html4/strict.dtd >
< HTML>
< HEAD>
    <脚本类型=文/ JavaScript的SRC =HTTP://$c$c.jquery.com/jquery-1.4.2.min.js>< / SCRIPT>
    <脚本类型=文/ JavaScript的SRC =htt​​ps://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js>< / SCRIPT>
    &LT;脚本类型=文/ JavaScript的 src="http://d23fbyuk1dcxop.cloudfront.net/js/jquery/jquery.multiselect-1.8.min.gz.js"></script>
    &LT;脚本类型=文/ JavaScript的SRC =htt​​p://d23fbyuk1dcxop.cloudfront.net/js/jquery/jquery.form.min.gz.js&GT;&LT; / SCRIPT&GT;
&LT; /头&GT;
&LT;身体GT;
&LT; D​​IV ID =照片DLG2&GT;
    &LT;形式ID =updatePhoto2ENCTYPE =的multipart / form-data的elementid =updatePhoto2NAME =updatePhoto2方法=POST
          行动=htt​​p://mywebsite.com/article/updatePhoto&GT;
        &LT;输入类型=文件大小=50级=easyinputID =photoFileNAME =photoFile&GT;
    &LT; /形式GT;
&LT; / DIV&GT;
&LT;脚本类型=文/ JavaScript的&GT;
    $('#照片DLG2)。对话框({
        模式:真正的,
        按钮:{提交:函数(){
            $('#updatePhoto2')。ajaxSubmit会({
                数据类型:JSON,
                成功:功能(数据){
                    警报(数据['状态']);
                }
            });
        }}
    });
&LT; / SCRIPT&GT;
&LT; /身体GT;
&LT; / HTML&GT;
 

解决方案

好了,我花了一段时间,但我终于找到了答案:有没有办法解决

事实上似乎使用浏览器的XMLHtt prequest jQuery的形式插件不能上传文件对象

其实我已经尝试了这个插件的网站给出的例子,事实上,如果添加了&LT;输入类型=文件名称=photoFile&GT; 您形式,头部的X要求,随着= XMLHtt prequest永远不会被发送到服务器,服务器无法与常规方法检测,如果你的要求是一个Ajax请求。

好知道,感谢你的帮助。

I have googled a lot but I didn't find any solution

I am using jqueyUI Dialog and ajaxSubmit for sending data (file and others) via modal dialog and Ajax. My problem is very simple: Data is sent correctly to the server but not via ajax i.e. there is no request header attribute X-Requested-With=XMLHttpRequest

So what do I do wrong or is there any kwnown issue about this?

Here is some snippet of my code.

$('#photo-dlg').dialog({
  modal: true,
  open: function() { $(this).load("/mywebsite/mydialog");} 
  //importing <form id="formid" method="post" name="updatePhoto" enctype="multipart/form-data"> ...
  buttons: { 
    'cancel' : function() {$(this).dialog('close');}, 
    'submit' : function() { 
               $('#formid').ajaxSubmit({
                   dataType: "json", 
                   success: function (data) { $('#photo-dlg').dialog('close'); })  
               });}
  });

BTW, I have tried options like :

headers: {"X-Requested-With":"XMLHttpRequest"} //OR
data: {"X-Requested-With":"XMLHttpRequest"} //OR
beforeSend: function(xhrObj) {xhrObj.setRequestHeader("X-Requested-With", "XMLHttpRequest")}

without any success

UPDATE: You can copy/paste the following code into an html page and try by yourself via FireBug (=> No X-Requested-With header)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js"></script>
    <script type="text/javascript" src="http://d23fbyuk1dcxop.cloudfront.net/js/jquery/jquery.multiselect-1.8.min.gz.js"></script>
    <script type="text/javascript" src="http://d23fbyuk1dcxop.cloudfront.net/js/jquery/jquery.form.min.gz.js"></script>
</head>
<body>
<div id="photo-dlg2">
    <form id="updatePhoto2" enctype="multipart/form-data" elementid="updatePhoto2" name="updatePhoto2" method="POST"
          action="http://mywebsite.com/article/updatePhoto">
        <input type="file" size="50" class="easyinput" id="photoFile" name="photoFile">
    </form>
</div>
<script type="text/javascript">
    $('#photo-dlg2').dialog({
        modal: true,
        buttons: { 'submit' : function() {
            $('#updatePhoto2').ajaxSubmit({
                dataType: "json",
                success: function (data) {
                    alert(data['status']);
                }
            });
        }}
    });
</script>
</body>
</html>

解决方案

Ok, it took me a while but I have finally found the answer : THERE IS NO SOLUTION !

Actually it seems that the jquery form plugin cannot upload files using the browser's XMLHttpRequest object ,

Actually I have tried given examples on the plugin website and indeed, if you add a <input type="file" name="photoFile"> to your form, the header X-Requested-With=XMLHttpRequest is never sent to the server and your server cannot detect with usual method if your request is an Ajax request.

Good to know and thanks for your help.

这篇关于为什么ajaxSubmit会不会发送正确的Ajax请求使用X-要求,随着= XMLHtt prequest请求头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆