Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么ajaxSubmit不使用X-request-with=XMLHttpRequest请求头发送正确的ajax请求_Javascript_Jquery_Ajax_Jquery Ui - Fatal编程技术网

Javascript 为什么ajaxSubmit不使用X-request-with=XMLHttpRequest请求头发送正确的ajax请求

Javascript 为什么ajaxSubmit不使用X-request-with=XMLHttpRequest请求头发送正确的ajax请求,javascript,jquery,ajax,jquery-ui,Javascript,Jquery,Ajax,Jquery Ui,我在谷歌上搜索了很多,但没有找到任何解决办法 我使用and通过模态对话框和Ajax发送数据(文件和其他) 我的问题很简单:数据正确地发送到服务器,但不是通过ajax,即没有请求头属性X-request-With=XMLHttpRequest 那么,我做错了什么,或者是否有任何已知的问题 下面是我的一些代码片段 $('#photo-dlg').dialog({ modal: true, open: function() { $(this).load("/mywebsite/mydialog

我在谷歌上搜索了很多,但没有找到任何解决办法

我使用and通过模态对话框和Ajax发送数据(文件和其他)

我的问题很简单:数据正确地发送到服务器,但不是通过ajax,即没有请求头属性
X-request-With=XMLHttpRequest

那么,我做错了什么,或者是否有任何已知的问题

下面是我的一些代码片段

$('#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'); })  
               });}
  });
一无所获

更新:
您可以将以下代码复制/粘贴到html页面中,并通过FireBug(=>No X-Requested-With header)自行尝试


$('#photo-dlg2')。对话框({
莫代尔:是的,
按钮:{'submit':函数(){
$('#updatePhoto2')。ajaxSubmit({
数据类型:“json”,
成功:功能(数据){
警报(数据['状态]);
}
});
}}
});

我早就被这个错误击中了。我知道你有多孤独:-)

我已经找了好几个星期了。有时候我有XMLHttpRequest头,有时候我没有。所以这也许不是一个明确的解决方案,但对我来说是有效的

我和你一样测试了头文件,我也测试了ajax设置。在…之前什么都不起作用。。。一个完整的javascript语法清理我的代码。在一些IE6测试之后,似乎有些“;”(或者是“,”?不-我写的时候闭嘴-是“;”)在一些关键点缺失,任何现代浏览器都没有受到影响。。。或者至少看起来他们没有受到影响。IE6完全被破坏了,所以我们发现了语法问题(顺便说一句——或者用二分法更现实)


我记不清了(是在装模作样之间吗?在一长串括号的末尾…),但是在我受到这个bug影响的每个地方,我都有一些语法错误被默默地忽略了。当然,jQuery变得越来越糟糕(就像清除了ajax设置一样)。这是我有生以来唯一一次高兴地发现IE6错误:-)

在Javascript中定义对象时需要注意逗号。您的代码缺少一个

$('#photo-dlg').dialog({
  modal: true,
  open: function() { $(this).load("/mywebsite/mydialog");}, // you had a missing comma here.
  //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'); })  
               });}
  });
$('photo-dlg')。对话框({
莫代尔:是的,
open:function(){$(this.load(“/mywebsite/mydialog”);},//此处缺少逗号。
//导入。。。
按钮:{
“取消”:函数(){$(this).dialog('close');},
“提交”:函数(){
$('#formid')。ajaxSubmit({
数据类型:“json”,
成功:函数(数据){$('#photo dlg')。对话框('close');})
});}
});

但这可能不是你问题的原因。

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

实际上,jquery表单插件

事实上,我已经在插件网站上尝试了给出的示例,事实上,如果您在表单中添加
,则不会将标题X-Requested-With=XMLHttpRequest发送到服务器,并且您的服务器无法使用常规方法检测您的请求是否为Ajax请求


很高兴认识你,谢谢你的帮助。

这可能会对某人有所帮助

我想我知道问题是什么时候发生的。当你使用IE 7、8或9(显然…)并且你试图使用
ajaxform
上传文件时(我假设同样的事情发生在
ajaxsubmit
),这就是问题发生的时候


IE不发送
X-request-With=XMLHttpRequest
标题。Chrome会发送此标题,Firefox也会发送。

IE 10在我不小心在页面上放置了两个具有相同id的表单时,删除了我的http标题(X-request-With=XMLHttpRequest)


我知道这很旧,但当我搜索这个问题时,它出现在谷歌的前五名结果中。

像firebug、LiveHTTPHeaders这样的工具告诉你什么?我用example@试过,我可以看到发送的标题(使用firebug检查)也许你应该发布你用来查找页眉的代码;问题可能在那里,而不是在你的页面代码中。不,页眉没有发送。通过Firefox验证,也从服务器端验证。毫无疑问是另一个问题。在我的情况下,问题是使用http(works)x https(不起作用)但是他发现了Firefox的问题。我会仔细检查我的代码。TYhx的建议。我会让你知道的update@Pointy问题出在每一款浏览器上,但雷吉勒罗说,由于IE6的存在,他们已经能够识别出语法错误,这些错误是问题的根源problem@fabien7474尝试二分法,删除代码片段,直到得到错误的o嗯,好吧,我知道你的意思。不幸的是,这不是问题。我已经发布了代码本身,你可以自己尝试。如果你错过了你谈论的文件的事实,你应该尝试使用隐藏的iframe上传jquery插件或其他插件。
<!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>
$('#photo-dlg').dialog({
  modal: true,
  open: function() { $(this).load("/mywebsite/mydialog");}, // you had a missing comma here.
  //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'); })  
               });}
  });