2012-05-22 84 views
2

我想創建一個通用的方式來在我的網頁中調用ajax請求。我創建了一個很好的小擴展方法來異步調用發佈請求。Ajax請求凍結網頁

$.tiqPost = function(action,data,callback) 
{ 
    alert('Posting...'); 
    $.fancybox.showActivity(); 
    $.ajaxSetup({async:true}); 
    $.post('/portfolios/mod/t:'+action+'/',data,function(response) 
    { 
     callback(response); 
     $.fancybox.hideActivity(); 
     alert('Finished Post.'); 
    }); 
    alert('Posting Set.'); 
} 

但是,無論何時該請求觸發,我的頁面將無限期凍結。在某些版本的Chrome中,它凍結而沒有反饋(單擊停止工作,我無法關閉該選項卡)。然而,在大多數其他瀏覽器中,它顯示「發佈」,然後停止而沒有達到「發佈設置」或「完成發佈」。

因此,Chrome沒有捕獲任何錯誤,只是凍結。這令我非常困惑。任何人有任何提示(或甚至只是一個不同的實現)?

編輯:

這不會發生的每一個要求。事實上,讓我發表一些案例在哪裏工作,有些案例不適用。等一下...

編輯編輯:

所以在這個例子

$.tiqPost('newcat',{t:"n"},function(response) 
       { 
        if(response) 
        { 
         $tabs.tabs('add','#tiq-tab-'+response,"New Category",0); 
        } 
       }); 

我有沒有問題。但是:

$(this).bind('blur',function(postdata) 
    { 
     //blur 
     if(postdata==null) 
      postdata = {value:$(this).text()}; 
     $.tiqPost($(this).attr('id').replace('tiq-submit-',''), 
      postdata, 
      function (response) { 
       $(this).text(response); 
      }); 
     $(this).removeClass('tiq-editable-editstate'); 
     $(this).attr('contentEditable','false'); 
    }); 

導致凍結。

+0

如果完全省略「ajaxSetup」,會發生什麼? – 2012-05-22 06:30:29

+0

默認情況下async爲true。 – Jivings

+0

你可以顯示'callback()'中的內容嗎? – Jivings

回答

1

不會單獨做

$.post('/portfolios/mod/t:'+action+'/',data,function(response) 
    { 
     callback(response); 
     alert('Finished Post.'); 
    }); 

,作品? 如果是這樣,那麼你可能有配置函數本身的問題

+4

這應該是一個評論而不是答案。它不回答這個問題。 – Jivings