单个Ajax Post请求在IE

时间:2015-05-26 11:33:21

标签: javascript jquery html ajax internet-explorer

我有一些代码使用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' : ''
                                        };
                                    }

3 个答案:

答案 0 :(得分:0)

答案 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' : ''
                                        };
                                    }