2010-07-21 39 views
1

我有一個測試頁面使用Ajax來向服務器發出一個http'刪除'請求。以下JS代碼在IE7中按照預期工作,但在Firefox中不起作用(除非我使ajax調用異步)。Ajax成功回調'刪除'不觸發在Firefox中

在Firefox中,除非異步是假的,錯誤回調獲取與0

  1. 狀態引發瞭解釋爲什麼這顯然是工作在Firefox中,如果調用是同步的任何人都可以幫助?
  2. 在這個頁面的上下文中,同步調用並不是一件壞事,但是我已經讀過,應該避免這樣做,因爲這會有效地凍結瀏覽器窗口,直到響應返回。是否有任何人可以建議的替代解決方案?

相關的代碼如下: -

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

感謝 Ĵ

+0

Afaik沒有'delete'類型。使用get或post。 – jantimon 2010-07-21 09:20:34

+1

我相信支持刪除。但它可能不支持所有瀏覽器。 – Jamen 2010-07-21 15:31:59

回答

1

Firefox不調用onreadystatechange的同步請求,因此jQuery的可能無法調用,因爲您的自定義回調。否則,發出同步請求通常是個好主意。

+0

你能澄清一下嗎?你所說的是,被調用的狀態變化會阻止被觸發的回調。我注意到,當async = false時,一切正常。 – Jamen 2010-07-21 15:35:55

相關問題