我有一些代码使用jquery从我的html中的一些隐藏表单创建对话框:
$("#editdeletediv").load().dialog(
{ //Set options for the dialog here
title: 'Edit/Delete log',
modal: true,
autoResize:true,
maxWidth: 600,
minWidth: 500,
buttons: {
Delete: function(){
$('#confirmdelete').load().dialog(
{ //Set options for the dialog here
title: 'Confirm deletion',
modal: true,
autoResize:true,
maxWidth: 300,
minWidth: 250,
buttons: {
Yes: function(){
$.ajax({
url: 'removelog',
type: "POST",
data: { id: calEvent.id},
dataType: "json",
success:function(response){
window.location.href = response;
}
});
},
No: function(){
$(this).dialog('close');
}
}
});
},
Save: function(){
var input = $("<input>")
.attr("type", "hidden")
.attr("name", "id").val(calEvent.id);
$('#editdeleteform').append($(input));
var formdata = new FormData($("#editdeleteform")[0]);
$.ajax({
url: 'updatelog',
type: 'POST',
data: formdata,
async: false,
success: function (response) {
window.location.href = response;
},
cache: false,
contentType: false,
processData: false
});
}
}
});
这一切都适用于chrome和firefox,但在IE中它是另一回事。 ajax发布到&#39; updatelog&#39;似乎没有在IE中工作,但发布到&#39; removelog&#39;确实。 有谁知道这里可能存在什么问题,我认为可能是,
var formdata = new FormData($(&#34;#editdeleteform&#34;)[0]);
但是我需要那个formdata变量,因为我传递给帖子的字段将来可能会有所不同(我可能会动态创建更多的html元素),所以我需要一种方法来从该表单中获取所有内容将其编码到我的javascript中
编辑:想出如何在Internet Explorer中打开控制台,现在我肯定知道问题出现的FormData:
SCRIPT5009:&#39; FormData&#39;未定义
有没有人知道在chrome,firefox和IE中有效的替代方案,还是有人知道如何解决IE的这个问题?
编辑:我觉得它比它的价值更麻烦,这是一个内部网站点解决方案,所以花太多时间在这上面是浪费(我可以要求我的用户使用特定的浏览器/版本,如果他们想要完整的功能)所以我就这样做了:
if(typeof FormData !== 'undefined'){
var formdata = new FormData($("#editdeleteform")[0]);
}
else{
var formdata = {
'id' : calEvent.id,
'editdate' : $("#editdate").val(),
'editcomment' : $("#editcomment").val(),
'editworkhours' : $("#editworkhours").val(),
'editdoctorsnote' : ''
};
}
答案 0 :(得分:0)
FormData不兼容ie 7-9请参阅:https://developer.mozilla.org/en-US/docs/Web/API/FormData
答案 1 :(得分:0)
var formdata = $("#editdeleteform").serialize()
尝试将表单数据发送到updatelog。这可能会对你有所帮助。
答案 2 :(得分:0)
我认为它比它的价值更麻烦,这是一个内部网站点解决方案,所以花太多时间在这上面会浪费(我可以要求我的用户使用特定的浏览器/版本,如果他们想要完整的功能)< / p>
所以我就这样做了:
if(typeof FormData !== 'undefined'){
var formdata = new FormData($("#editdeleteform")[0]);
}
else{
var formdata = {
'id' : calEvent.id,
'editdate' : $("#editdate").val(),
'editcomment' : $("#editcomment").val(),
'editworkhours' : $("#editworkhours").val(),
'editdoctorsnote' : ''
};
}