2010-06-10 46 views
2

我已經在FF和MSIE中有完美的工作,但在Safari中無法正常工作。這是一個帶有選項的表單,它通過來自MySQL DB的AJAX/jQuery進行更新。在Safari/Mac中需要關於jQuery/AJAX調用的幫助

在Safari中,當您選擇第一個項目時,它會正確加載下一個選擇菜單的選項;然而,當你選擇其中的一個(在隨後的選擇菜單中加載新的選項)時,整個表單將重置並從該點開始打破。 有誰知道會導致此問題的Safari錯誤? 這裏的JS:

$(document).ready(function(){ 
    $("#searchForm select").change(updateSearchForm); 
}); 
function updateSearchForm() { 
    $.ajax({ 
     url: '/elements/search_form.php?ajax=true', 
     data: $('#searchForm').serialize(), 
     error:function(xhr,err){ 
      alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
      alert("responseText: "+xhr.responseText); 
     }, 
     success: function(data) { 
      $("#searchForm").html(data); 
      $("#searchForm select").change(updateSearchForm); 
     } 
    }); 
} 

我可以張貼相關的PHP/HTML的形式,但它是漫長的。 我是相對較新的JS,所以我不知道從哪裏開始調試... TIA

+0

什麼版本的Safari? Safari調試器對發生了什麼有什麼評論? – 2010-06-10 15:54:59

+0

在OS X上的Safari 4和5中發生。我試着在加載頁面和選擇表單中的選項時查看JS控制檯和調試器輸出,並且沒有輸出結果。雖然,對JS來說相當新,但我不確定要尋找什麼! :-P – protohominid 2010-06-10 19:45:47

回答

1

可能是您通過替換HTML創建無效的表單。有些瀏覽器對此很挑剔。當然,我不知道,因爲你沒有發送整個代碼,但你有沒有嘗試使用append()而不是html()修改表單?爲了診斷的原因,也可以嘗試追加一小部分。

1

一位朋友在閱讀Gabor的帖子後想到了這一個......我需要使用「.replaceWith(data)」而不是「.html(data)」。很明顯FF是爲了彌補這一點,但Safari不是;每次ajax加載新的html,它將它嵌套到目標元素(#searchForm)中,因此嵌套了「form」標記,Safari不喜歡這樣做。 感謝您的幫助,每個人!