JQuery AJAX в ie7 - PullRequest
       6

JQuery AJAX в ie7

0 голосов
/ 31 марта 2011

Я действительно надеюсь, что кто-то может помочь мне с этим.В основном у меня есть проблема с ajax-вызовом в jQuery в ie7.Скрипт работает в любом другом браузере, кроме ie7.

Ajax всегда возвращает ошибку в ie7.

Код:

<script type="text/javascript">

$(document).ready(function()
{

//Run Ajax on Click
$('#GlsSubmit').click(function(){

//Get input from textfields
street = $("#GlsStreet").val(); 
zip = $("#GlsZip").val();

//How many results to show
amount = '5';
var time = new Date;

//Initiate Ajax (fetch xml-data from .asp in applications folder)
  $.ajax({
    url: "http://www.test.dk/gls.aspx?street="+street+"&zip="+zip+"&amount="+amount+"&dummy="+ time.getTime(),
    success: function(msg){

        //Saving Shop data
        CompanyName = $(msg).find("PakkeshopData").html();
        $('#GlsResults').html('');
        $(msg).find("PakkeshopData").each(function(index){

            CompanyName = $(this).find('CompanyName').text();
            CompanyStreetName = $(this).find('StreetName').text();
            CompanyZipCode = $(this).find('ZipCode').text();
            CompanyCityName = $(this).find('CityName').text();
            CompanyID = $(this).find('Number').text();
            $('#GlsResults').append("<input type='radio' class='required' name='shopSelecter' id='shopSelecter"+index+"' value='"+CompanyID+"'/><label for='shopSelecter"+index+"'>"+ CompanyName +", "+CompanyStreetName+", " + CompanyZipCode + " "+ CompanyCityName +"</label><div class='clear'></div>");

        }); //End of each

        //See if user choses another shop
        $('#GlsResults input[type=radio]').change(function(){
            shopid = $(this).val();
             $.ajax({
                url: "http://www.test.dk/gls2.aspx?ParcelShopNumber="+shopid,
                success: function(data){

                        //Save oinfo for the chosen shop
                        CompanyNameSingle = $(data).find('CompanyName').text();
                        CompanyStreetNameSingle = $(data).find('StreetName').text();
                        CompanyZipCodeSingle = $(data).find('ZipCode').text();
                        CompanyCityNameSingle = $(data).find('CityName').text();
                        CompanyIDSingle = $(data).find('StreetName2').text();

                        //Change values for input fields
                        $('#EcomOrderDeliveryAddress2').val(CompanyIDSingle);
                        $('#EcomOrderDeliveryName').val(CompanyNameSingle);
                        $('#EcomOrderDeliveryAddress').val(CompanyStreetNameSingle);
                        $('#EcomOrderDeliveryZip').val(CompanyZipCodeSingle);
                        $('#EcomOrderDeliveryCity').val(CompanyCityNameSingle);

                }, //End of succes

                error:function(response){

                } //End of error

            }); // End of ajax

        }); // End of radio button change

        $("#gls-error").hide();

   }, //End of succes
     error:function(response){
     //Error Messages
     if( zip == ''){
        $("#GlsResults").html("<div id='gls-error'>Indtast venligst et postnummer</div>");
     }

     else if( !(zip.length == 4)){
        $("#GlsResults").html("<div id='gls-error'>Indtast venligst et postnummer på 4 cifre</div>");
     }

     else{
        $("#GlsResults").html("<div id='gls-error'>Kunne ikke finde et pakkecenter</div>");
        }
    } //End of error
  }); // End of ajax
  }); //End of click



}); //End of document.ready


</script>

У кого-нибудь есть идеи :-)?

Спасибо!

1 Ответ

4 голосов
/ 31 марта 2011

У кого-нибудь есть идеи

Да: Разбейте это на более мелкие кусочки. Такой тип глубокого вложения очень трудно читать, поддерживать и устранять.: -)

Если вы не сказали что ошибка, вот некоторые другие наблюдения, которые могут помочь вам в этом:

  1. Если страница, на которой этоскрипт запущен не на http://www.fricykler.dk, это ваша проблема.Вы работаете с Тот же Политика происхождения .
  2. Если равен на http://www.fricykler.dk, удалите это из вызовов ajax (просто используйте url: '/gls.aspx...').
  3. Если вы не объявляете street, zip и другие в коде, который вы не цитировали, вы становитесь жертвой Ужаса неявных глобалов .Рекомендую объявить их.Кто знает, может быть, вы перезаписываете что-то важное, так как пространство имен window становится очень перегруженным в IE.
  4. Пошаговое выполнение кода в отладчике.Вы можете использовать бесплатную версию Visual Studio.Net для отладки клиентского кода в IE7.(В целом, здесь, в 2011 году, нет оправдания , чтобы не использовать отладчик для работы на стороне клиента.)

Другие наблюдения, которые почти наверняка не проблема:

  • Каждый раз, когда вы вызываете $(), он должен выполнить несколько вызовов функций, выделить память и, если вы передаете ему селектор (дажеселектор идентификаторов), он должен сделать запрос DOM.Поэтому всякий раз, когда вы обнаруживаете, что повторяете это (CompanyName = $(this).find('CompanyName').text();, CompanyStreetName = $(this).find('StreetName').text();, ...).Попробуйте сделать это один раз и запомнить результат (var $this = $(this);, затем CompanyName = $this.find('CompanyName').text(); и т. Д.)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...