jQuery $.ajax молча завершает работу, никаких сообщений об ошибках, и сервер ответил 200 OK

Я собираюсь вникнуть в эту проблему. Я использую очень простые вызовы jQuery ajax для получения значений из базы данных и заполнения нескольких выбранных элементов значениями, которые возвращаются как JSON. У меня он работает без проблем в большинстве браузеров, однако клиент сообщает, что ни они, ни их клиенты не видят результата.

По пути я добавил несколько команд Console.log (), чтобы убедиться, что код выполняется, и это действительно так. Иногда ajax GET для рассматриваемого URL-адреса работает, в других случаях STILL возвращает 200 OK, но код просто не выполняется дальше, и сообщения об ошибках ajax не отображаются в обратном вызове ошибки.

Вот код, который я использую:Может ли кто-нибудь заметить что-то очевидное, что может привести к захлебыванию некоторых браузеров? Если это так, я был бы признателен, если бы вы указали на это:

        var $j = jQuery.noConflict(true);
        $j(document).ready(function(){
            //console.log("jQuery has loaded");
            //console.log("attempting to load country list via AJAX call now");
            $j.ajax({
                url: 'http://www.topplaces.co.za/templates/seb_one/positions/search_establishments_filter/search/db.php?q=countries&rand='+Math.random(),
                success: function(data){
                    //console.log("Successfully got country list, going to populate the dropdown now");
                    if(data.length){
                        $j("#country").children("option:not(:first)").remove();
                        $j("#country").attr("disabled", false);
                        $j.each(data, function(resultIndex, result){
                            var o = new Option();
                            $j(o).html(result.country).val(result.country);
                            $j("#country").append(o);
                        })
                        //console.log("Country list should be populated now?");
                    }
                },
                error: function (xhr, ajaxOptions, thrownError){
                    //console.log(xhr.responseText);
                    console.log(thrownError);   
                },
                dataType: 'json',
                cache: false
            })

            $j("#country").live('change', function(){
                var id = $j(this).val();
                if(id == ""){
                    $j("#province").attr("disabled", "disabled");
                    $j("#town").attr("disabled", "disabled");
                    return false;
                }
                $j.ajax({
                    url: 'http://www.topplaces.co.za/templates/seb_one/positions/search_establishments_filter/search/db.php?q=provinces&c='+id+'&rand='+Math.random(),
                    success: function(data){
                    if(data.length){
                        $j("#province").children("option:not(:first)").remove();
                        $j("#province").attr("disabled", false);
                        $j.each(data, function(resultIndex, result){
                            var o = new Option();
                            $j(o).html(result.province).val(result.province);
                            $j("#province").append(o);
                        })
                    }
                },
                dataType: 'json',
                cache: false
                })
            });

            $j("#province").live('change', function(){
                var id = $j(this).val();
                if(id == ""){
                    $j("#town").attr("disabled", "disabled");
                    return false;
                }
                $j.ajax({
                    url: 'http://www.topplaces.co.za/templates/seb_one/positions/search_establishments_filter/search/db.php?q=towns&p='+id+'&rand='+Math.random(),
                    success: function(data){
                    if(data.length){
                        $j("#town").children("option:not(:first)").remove();
                        $j("#town").attr("disabled", false);
                        $j.each(data, function(resultIndex, result){
                            var o = new Option();
                            $j(o).html(result.town).val(result.town);
                            $j("#town").append(o);
                        })
                    }
                },
                dataType: 'json',
                cache: false
                })
            });

        })

Я закомментировал команды Consol.log просто потому, что клиент получал сообщения об ошибках в IE, поскольку консоли нет.

РЕДАКТИРОВАТЬ :Я не упомянул, что это один и тот же запрос домена и, следовательно, подчиняется той же политике происхождения

Полный сайт находится здесь:http://www.topplaces.co.za/ Справа находится группа динамического выбора, которая начинается со страны и инициирует AJAX до тех пор, пока не будет выбрана провинция. Дело в том, что многие говорят, что Country для них не груз...

С уважением, Саймон

5
задан SimonDowdles 25 April 2012 в 13:00
поделиться