需要有关Safari / Mac中jQuery / AJAX调用的帮助

时间:2010-06-10 15:50:13

标签: php javascript jquery ajax safari

我有一些在FF和MSIE中完美运行但在Safari中无法正常工作的东西。这是一个带有选项的表单,可以通过MySQL DB中的AJAX / jQuery进行更新。

在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

2 个答案:

答案 0 :(得分:1)

您可能是通过替换HTML来创建无效表单。有些浏览器对此非常挑剔。当然我不确定,因为您没有发送整个代码,但是您是否尝试使用append()而不是html()来修改表单?出于诊断原因,还尝试先添加一小部分。

答案 1 :(得分:1)

一位朋友在阅读了Gabor的帖子后想出了这个...我需要使用“.replaceWith(data)”而不是“.html(data)”。显然FF正在补偿这一点,但Safari并非如此;每次ajax加载新的html时它都嵌套在目标元素(#searchForm)中,所以有嵌套的“form”标签,Safari不喜欢这样。 感谢大家的帮助!