Нужна помощь с вызовом jQuery / AJAX в Safari / Mac - PullRequest
2 голосов
/ 10 июня 2010

У меня есть кое-что, что отлично работает в FF и MSIE, но не работает должным образом в Safari.Это форма с выборками, которые обновляются через AJAX / jQuery из БД MySQL.

В 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 ]

1 голос
/ 13 июня 2010

Друг понял это после прочтения поста Габора ... Мне нужно было использовать «.replaceWith (data)» вместо «.html (data)».Очевидно FF компенсирует это, но Safari - нет;Каждый раз, когда ajax загружал новый html, он вкладывал его в целевой элемент (#searchForm), поэтому были вложенные теги «form», и Safari это не понравилось.Всем спасибо за помощь!

1 голос
/ 12 июня 2010

Возможно, вы создаете недопустимую форму путем замены HTML. Некоторые браузеры довольно требовательны к этому. Конечно, я не знаю наверняка, потому что вы не отправили весь код, но пытались ли вы изменить форму, используя append () вместо html ()? Также попробуйте сначала добавить небольшую порцию только для диагностики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...