Javascript 针对';删除';在Firefox中不触发

Javascript 针对';删除';在Firefox中不触发,javascript,jquery,ajax,firefox,callback,Javascript,Jquery,Ajax,Firefox,Callback,我有一个测试页面,可以使用Ajax向服务器发出http“删除”请求。以下JS代码在IE7中可以正常工作,但在Firefox中无法正常工作(除非我将ajax调用设置为异步) 在Firefox中,除非async为false,否则会触发状态为0的错误回调 如果调用是同步的,有人能帮助解释为什么这在Firefox中显然有效吗 在本页的上下文中,同步调用并不是一件坏事,但是我已经读到,应该避免这种情况,因为这将有效地冻结浏览器窗口,直到响应返回。有没有其他人可以建议的解决方案 相关代码如下:- <s

我有一个测试页面,可以使用Ajax向服务器发出http“删除”请求。以下JS代码在IE7中可以正常工作,但在Firefox中无法正常工作(除非我将ajax调用设置为异步)

在Firefox中,除非async为false,否则会触发状态为0的错误回调

  • 如果调用是同步的,有人能帮助解释为什么这在Firefox中显然有效吗
  • 在本页的上下文中,同步调用并不是一件坏事,但是我已经读到,应该避免这种情况,因为这将有效地冻结浏览器窗口,直到响应返回。有没有其他人可以建议的解决方案
  • 相关代码如下:-

    <script src="${url.context}/scripts/jquery-1.3.2.min.js"></script>
    
    <SCRIPT LANGUAGE="JavaScript">
    
    jQuery.noConflict();
    
    function deleteImage(nodeParam) {
          alert('hello');
          var options = {
            type: 'DELETE',
      async: false,
            url: '${url.context}/service/api/asset/delete?alf_ticket=${session.ticket}'+'&format=text'+'&'+nodeParam,
            dataType: 'json',
            success: function(data, textStatus) {
              jQuery('#result-div').html('');
              if (data['ok'] == true) {
                //jQuery('#result-div').html('Delete successful using parameter - ' + nodeParam);
                alert("Delete successful" );
              } else {
                alert( "Response 'ok' set to 'false' on success callback!" );
                jQuery('#result-div').html('Delete failed!');
              }
            },
            error: function (request, textStatus, errorThrown) {
              //jQuery('#result-div').html('Delete failed!');
        alert("Delete Failed");
        alert(request.status);
              //alert("Error callback triggered, request failed with status: " + request.status + ' ' + request.responseText);
            }
          };
          jQuery.ajax(options);
    }
    // End -->
    </script>
    
    
    jQuery.noConflict();
    函数deleteImage(节点内存){
    警惕(“你好”);
    变量选项={
    键入:“删除”,
    async:false,
    url:'${url.context}/service/api/asset/delete?alf_ticket=${session.ticket}'+'&format=text'+'&'+nodeParam,
    数据类型:“json”,
    成功:功能(数据、文本状态){
    jQuery('#result div').html('');
    如果(数据['ok']==true){
    //jQuery('#result div').html('Delete successfully using parameter-'+nodeParam);
    警报(“删除成功”);
    }否则{
    警报(“成功回调时响应“ok”设置为“false!”);
    jQuery('#result div').html('Delete failed!');
    }
    },
    错误:函数(请求、文本状态、错误抛出){
    //jQuery('#result div').html('Delete failed!');
    警报(“删除失败”);
    警报(请求状态);
    //警报(“已触发错误回调,请求失败,状态:“+request.status+”+request.responseText”);
    }
    };
    ajax(选项);
    }
    //结束-->
    
    谢谢
    J

    Firefox不会为同步请求调用onreadystatechange,因此jQuery可能无法调用自定义回调。否则,发出同步请求通常是个坏主意。

    Afaik没有
    delete
    类型。使用get或post。我相信支持删除。但并非所有浏览器都支持它。你能澄清一下吗?您的意思是,调用onreadystate更改会禁止启动回调。我注意到,当async=false时,一切都可以工作。