“删除”的Ajax成功回调不会在Firefox中触发

时间:2010-07-21 09:13:35

标签: javascript jquery ajax firefox callback

我有一个测试页面使用Ajax向服务器发出http'删除'请求。以下JS代码在IE7中按预期工作,但它在Firefox中不起作用(除非我使ajax调用异步)。

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

  1. 如果呼叫是同步的,那么任何人都可以帮助解释为什么这显然在Firefox中有效吗?
  2. 在本页面的上下文中,同步调用并不是坏事,但我已经读过这应该避免,因为这会有效地冻结浏览器窗口,直到响应返回。是否有人可以建议的替代解决方案?
  3. 相关代码如下: -

    <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>
    

    由于 Ĵ

1 个答案:

答案 0 :(得分:2)

Firefox没有为同步请求调用onreadystatechange,因此jQuery可能无法调用您的自定义回调。否则,制作同步请求通常是个坏主意。