2009-12-01 29 views
0

使用函數可以調用div-popover並使用Ajax,PHP,MySQL和一些HTML/CSS填充動態數據。一切正常。功能太快?所以他們會跳過?

當我想刪除剛剛彈出的列表中的條目時,它的功能應該如此。當我爲我的列表發送更新請求時,它也以我想要的方式發送。但是,當我打電話給delete(); update();後,我的第一個功能會被忽略。

當我將alert()'s放在兩個函數中時,我看到兩個函數都得到執行,並且腳本在我的ajax函數,PHP ajax處理函數中正常運行,並將結果返回給用戶,並且所有警報都進行得很順利!

所以我的問題是,我的功能是否太快?還是有什麼我在這裏失蹤,這是造成非刪除?

解決方案我感動的delete功能xmlHttp.resonseTextupdate調用線。這樣第二個函數調用在第一個函數完成後執行。謝謝大家!

+1

沒有相關的代碼片段或一個例子,剝離到絕對最小值,這再現了問題,我們不能做任何事情,但可能會發生什麼的野生猜測 – jitter 2009-12-01 13:59:47

+0

野生猜測適合;)我也認爲這是更多一個策略/原則問題,而不是我的代碼中的一個錯誤。儘管感謝您的評論! :) – Ben 2009-12-01 14:13:37

+0

http://ejohn.org/blog/how-javascript-timers-work/給出了對異步JavaScript執行的有用見解。 – 2009-12-04 05:03:52

回答

3

的JavaScript將只執行一條語句,而Ajax調用是怎麼回事。大多數使用ajax的方法都有一個可以調用的完整函數,這樣在ajax調用之後要執行的代碼僅在之後被調用。

我還沒有用過PHP,但它可能值得一看。

+0

你說得對。我已經在xmlHttp.response之後放置了更新函數,這樣它們在彼此之後而不是在同一時間執行。 – Ben 2009-12-01 14:11:14

3

聽起來好像這兩種方法自從AJAX以來同時執行(異步)。

你希望他們同步執行。

詳細信息請參閱此模式頁... Ajax patterns

+0

感謝您的回覆。有用的資源。正如我對其他人所說的,我今天的投票都被使用了。明天我會給你點數!再次感謝! – Ben 2009-12-01 14:12:14

5

我的猜測是你沒有想過AJAX中的A。它代表異步。這意味着當你執行一個XmlHttpRequest調用時,它將在後臺執行。即在您呼叫delete();之後,腳本將立即繼續並執行update();

+0

異步,JavaScript和XML。 :-) 我會upvote你比我更多的描述性答案。 – 2009-12-01 14:05:24

+0

我只是在談論答::) – 2009-12-01 14:05:27

+0

你是對的,那就是問題所在。現在解決了。我今天的投票全部用完,明天我會投票給你答案。 – Ben 2009-12-01 14:10:23