ie7中的jQuery ajax

时间:2011-03-31 08:18:32

标签: jquery xml ajax

我真的希望有人可以帮助我。基本上我在ie7中的jQuery中有一个ajax调用的问题。除了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 个答案:

答案 0 :(得分:4)

  

任何人都有任何想法

是的:将其分解成更小的部分。这种深度嵌套很难阅读,维护和排除故障。 : - )

如果没有您说 错误,这里有一些其他观察可能会帮助您继续进行:

  1. 如果运行此脚本的页面不在http://www.fricykler.dk上,那就是您的问题。您正在遇到Same Origin Policy
  2. 如果http://www.fricykler.dk上的 ,请从ajax来电中删除(仅使用url: '/gls.aspx...')。
  3. 除非您在未引用的代码中声明streetzip和其他人,否则您将成为Horror of Implicit Globals的牺牲品。建议宣布它们。谁知道,也许你覆盖了一些重要的东西,因为window命名空间让IE 非常混乱。
  4. 在调试器中逐步完成代码。您可以使用the free edition of Visual Studio.Net调试IE7中的客户端代码。 (一般来说,在2011年,no excuse没有使用调试器进行客户端工作。)
  5. 其他观察几乎肯定问题:

    • 每次你调用$(),它必须做几个函数调用,一个内存分配,如果你传递一个选择器(甚至一个ID选择器),它有做一个DOM查询。所以每当你发现自己重复它时(CompanyName = $(this).find('CompanyName').text();CompanyStreetName = $(this).find('StreetName').text();,......)。考虑做一次并记住结果(var $this = $(this);然后CompanyName = $this.find('CompanyName').text();等。)