2010-09-28 118 views
0


我正在使用jQuery.ajax()以及一些特定的data。其中一個是albumid,如果用戶選擇不使用他的某個專輯,則在服務器端生成該albumid。問題在於,如果用戶將幾張照片添加到新專輯中,則不是將所有照片添加到同一張專輯,而是創建多張專輯,每張專輯帶有一張照片。動態修改jquery通過ajax發送的數據

什麼是目前的工作:

  • 更新專輯(使用一個用戶已經有)
  • 創建新專輯
  • 發回的新專輯編號

我試着根據在success事件上發回的新專輯ID更新專輯名稱字段,認爲在接下來的ajax調用中,屬性data: ({ 'albumid': album.val())}將成爲新專輯i d,但它仍然使用前一個值。

我知道這個問題可以通過使用async: false來解決,因爲在這種情況下,每個ajax調用將使用專輯名稱字段中的更新值,但它完全凍結了瀏覽器。

對這個問題你有什麼技巧/建議嗎?


乾杯,
尼古拉斯。

+0

「它創建了幾張專輯,每張專輯都有一張照片。」請解釋'它'?服務器軟件做到了嗎? – Anders 2010-09-28 12:51:15

+0

一個遙遠的服務器軟件,以我上傳圖像。乾杯, – Nicolas 2010-10-01 14:06:38

回答

0

聽起來就像你有一個競爭條件。在沒有看到代碼的情況下很難確定,但是在成功處理程序中解析代碼並且未對其進行評估時,album.val()可能會設置一次。

您仍然可以使用aync呼叫,但您必須以串行方式進行。它被稱爲主動對象模式。設置一個包含ajax調用並調用一個的數組。在成功處理程序中,每個人都有一個呼叫觸發下一個呼叫。

+0

我想你完全瞭解我的情況,但你能否給我一個例子?乾杯, – Nicolas 2010-10-01 14:00:07

0

您應該使用新值作爲album.val()似乎不是用新值重新評估。

應該使用jQuery檢索來自 $(「#hiddenId」)新專輯中值相當容易。VAL()

考慮到檢索ID存儲在創建隱藏字段來自ajax請求。

+0

我實際上是通過檢索新的值:'album.val(msg);''成功'調用ajax。我沒有看到我可以在這個方向上做更多的事情來刷新album.val()。另外我認爲,因爲所有圖像都要求同時上傳('async:true'),並且我只更新了'album.val()',當第一個請求上傳時,其他人無法看到該字段實際上是在它們被調用之後更新的。 – Nicolas 2010-10-01 14:06:00

+0

如果您向我們提供您使用的jQuery版本以及您在代碼快照中使用的相冊插件,它肯定會有所幫助。也許可以有一些「黑客」做 – rasata 2010-10-06 20:30:39

+0

我正在使用jQuery 1.4.2,如果通過「插件」你的意思是遠程服務器,它實際上是Facebook的,所以沒有什麼我們可以做在這一方我想。乾杯, – Nicolas 2010-10-07 15:40:55