【发布时间】:2011-01-07 20:36:33
【问题描述】:
我搜索了很多,但我没有找到任何解决方案
我使用jQueryUI Dialog 和ajaxSubmit 通过模态对话框和Ajax 发送数据(文件和其他)。
我的问题很简单:数据正确发送到服务器但不是通过ajax,即没有请求头属性X-Requested-With=XMLHttpRequest
那么我做错了什么还是有任何已知问题?
这是我的代码的一些 sn-p。
$('#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'); })
});}
});
顺便说一句,我尝试过类似的选项:
headers: {"X-Requested-With":"XMLHttpRequest"} //OR
data: {"X-Requested-With":"XMLHttpRequest"} //OR
beforeSend: function(xhrObj) {xhrObj.setRequestHeader("X-Requested-With", "XMLHttpRequest")}
没有成功
更新:
您可以将以下代码复制/粘贴到 html 页面中,然后通过 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>
【问题讨论】:
-
像firebug、LiveHTTPHeaders这样的工具告诉你什么?
-
我尝试了示例@jquery.malsup.com/form/#ajaxSubmit,我可以看到正在发送的标头(使用萤火虫检查它。)
-
也许你应该发布你用来寻找标题的代码;问题可能存在,而不是您的页面代码。
-
不,不发送标头。通过 Firefox 和服务器端验证。毫无疑问。
-
就我而言,问题在于使用 http(有效)x https(无效)
标签: javascript jquery ajax jquery-ui