当前位置: 首页 > 面试题库 >

jQuery.ajax在IE中带有“删除”方法的问题

西门高歌
2023-03-14
问题内容

我有一个页面,用户可以在其中使用按钮编辑各种内容,并选择触发ajax调用的页面。特别是,一个操作导致一个带有一些数据和一个“
put”请求的远程调用url,(当我使用一个宁静的rails后端时)触发了我的更新操作。我还有一个删除按钮,该按钮调用相同的URL,但带有“删除”请求。“更新”
ajax调用可在所有浏览器中使用,但“删除”功能不适用于IE。我之前碰到过类似这样的事情,记忆犹新……有人能给我带来启示吗?这是我的ajax电话:

//update action - works in all browsers
jQuery.ajax({
  async:true, 
  data:data, 
  dataType:'script', 
  type:'put', 
  url:"/quizzes/"+quizId+"/quiz_questions/"+quizQuestionId,
  success: function(msg){ 
    initializeQuizQuestions();
    setPublishButtonStatus();
  }
});



//delete action - fails in ie
  function deleteQuizQuestion(quizQuestionId, quizId){
    //send ajax call to back end to change the difficulty of the quiz question
    //back end will then refresh the relevant parts of the page (progress bars, flashes, quiz status)
    jQuery.ajax({
      async:true, 
      dataType:'script', 
      type:'delete', 
      url:"/quizzes/"+quizId+"/quiz_questions/"+quizQuestionId,
      success: function(msg){ 
        alert("success");
        initializeQuizQuestions();
        setSelectStatus(quizQuestionId, true);
        jQuery("tr[id*='quiz_question_"+quizQuestionId+"']").removeClass('selected');        
      },
      error: function(msg){
        alert("error:" + msg);
      }
    });     
  }

我将删除成功的错误和错误放入删除ajax中,只是为了查看会发生什么,并且触发了ajax调用的“错误”部分,但是后端没有任何提示(我通过观察后端知道这一点服务器日志)。因此,它在进行呼叫之前就失败了。我无法弄清楚为什么-
我从错误块中得到的’msg’是空白的。

有任何想法吗?这是一个已知问题吗?我已经在ie6和ie8中对其进行了测试,但在任何一个中均不起作用。

谢谢-最大

编辑-解决方案-感谢Nick Craver为我指出了正确的方向。

Rails(也许还有其他框架?)对不支持的放置和删除请求有一个替代:将参数“ _method”(注意下划线)设置为“ put”或“
delete”的发布请求将被视为实际请求类型是那个字符串。因此,就我而言,我进行了更改-请注意“数据”选项:

   jQuery.ajax({
      async:true, 
      data: {"_method":"delete"},
      dataType:'script', 
      type:'post', 
      url:"/quizzes/"+quizId+"/quiz_questions/"+quizQuestionId,
      success: function(msg){ 
        alert("success");
        initializeQuizQuestions();
        setSelectStatus(quizQuestionId, true);
        jQuery("tr[id*='quiz_question_"+quizQuestionId+"']").removeClass('selected');        
      },
      error: function(msg){
        alert("error:" + msg);
      }
    });     
  }

Rails现在将其视为删除请求,从而保留了REST系统。我的PUT示例起作用的原因仅仅是因为在这种特殊情况下IE很高兴发送PUT请求,但它正式不支持它们,因此最好对PUT请求和DELETE请求都这样做。


问题答案:

看看你的type属性 type:'delete'

关于jQuery的文档类型:

发出请求的类型(“ POST”或“ GET”),默认为“
GET”。注意:其他HTTP请求方法(例如PUT和DELETE)也可以在此处使用,但并非所有浏览器都支持它们。

相反,我会尝试将其包含在您的数据中,然后在服务器端进行查找,如下所示:

data: {'action': 'delete'},


 类似资料:
  • 我的应用程序在所有浏览器中工作,除了IE11。在IE中,我得到。我已经添加了babel polyfill,但我仍然得到相同的错误,就像polyfill没有正确编译。 我安装了babel-polyfill。 我更改了webpack.base.conf.js,如下所示 这个项目是从Vuetify的webpack样板开始的。

  • 问题内容: 我有一个字典,想删除所有有空值字符串的键。 做这个的最好方式是什么? 问题答案: Python 2.X Python 2.7-3.X 请注意,您所有的键都有值。只是其中一些值是空字符串。没有值的字典中就没有键。如果它没有价值,就不会在字典中。

  • 问题内容: 我有一个大的字符串,我用换行符分隔。如何删除所有空行(仅限空白)? 伪代码: 问题答案: 使用正则表达式: 使用正则表达式+ : 如在键盘上所见。

  • 问题内容: 我正在尝试发送跨域域并添加自定义的“授权”标头。请参见下面的代码。 错误: XMLHttpRequest无法加载{url}。请求标头字段Access-Control-Allow-Headers不允许授权。 我也尝试过: 在ajax请求中。 可能是jquery-ajax框架阻止了跨域身份验证?我怎样才能解决这个问题? 更新: 顺便说一句:是否有一种更安全的方法将auth.key存储在客户

  • 问题内容: 我有选择的元素,我想删除的箭头,然后我可以添加其他图标..我能做到这一点的Firefox Safari和Chrome,但这并没有工作 IE9 。 SEE 小提琴上的 IE9 。我所需要的就是删除ie9中的箭头,请JSFIDDLE回答。 问题答案: 在IE9中,由于您已自定义div的高度和宽度并进行选择,因此需要更改css使其与您的css相匹配。 如果是IE10,则可以在css3以下使用

  • 我有一个目录,它是在执行应用程序后创建的。在使用应用程序的过程中,它充满了一些图片,这些图片是ComboBox的ItemsSource。在关闭应用程序之前,我试图通过设置new()或NULL来清除ItemsSource并删除该目录。如果目录为空,则会正常删除。但除此之外——什么都没有发生,也没有例外。我做错了什么? 创建目录并将路径值分配给“FeedBackScreenshotsPath” 删除