2010-10-02 79 views
1

我試圖在用戶正在編輯條目時鎖定數據庫表中的一行。 因此,我在表格lock中有一個字段,我使用php在頁面加載時設置了1。MooTools AJAX請求卸載

然後我試圖解鎖條目(設置爲0),當頁面被卸載。 這是我的方法。它在IE中正常工作,但在Firefox,Chrome等中無法正常工作...... window.onbeforeunload在所有瀏覽器中均可正常工作,我對此進行了測試。 他們只是不做請求 但是 如果我簡單地把警報後req.send();它適用於某些瀏覽器,但不適用於Safari或Chrome。所以我試着在它後面放置其他東西,以便在請求後還有其他的東西可以做,但它不起作用。

功能測試(){ VAR REQ =新請求({ URL: 'INC/AJAX/unlock_table.php unlock_table = regswimmer & unlock_id =', }); req.send(); alert('bla'); //只和這個一起工作!?!?!? }

window.onbeforeunload = test;

我已經嘗試過不同的方式來做請求,但似乎沒有任何工作。而這個請求本身就行得通,而不是在這個星座中。

任何幫助將不勝感激!

謝謝

回答

4

默認情況下請求是異步的。這意味着它會分叉而不關心完整的,可能會或可能不會(有時間完成)。通過在那裏放置警報,確保有足夠的時間完成請求。

基本上,你可能會更好嘗試這些東西:

  1. 添加async: false請求對象的選項。這將確保請求在離開之前完成。
  2. 使用圖像而不是跟蹤像素。
  3. 移動到這是一個快一點,因爲它不包含額外的頭和cookie的信息,就可以完成更好的(恢復到這一點,如果異步延遲太多)

你能做的圖像,像這樣(也將是$ _GET)

new Element("img", { 
    src: "inc/ajax/unlock_table.php?unlock_table=regswimmer&unlock_id=" + someid + "&seed=" + $random(0, 100000), 
    styles: { 
     display: "none" 
    } 
}).inject(document.body); 

最後,使用window.addEvent("beforeunload", test);或者你可能陷入困境mootools的內部的垃圾收集

+0

非常感謝,我加了異步:假的,它的工作現在:-) – Roman 2010-10-02 14:06:36

+0

噢,我你sed window.addEvent('unload')。 – Roman 2010-10-02 14:06:55

+0

ahhhh,beforeunload沒有在opera中工作,所以...... – Roman 2010-10-02 14:07:11