我真的希望有人可以帮助我。基本上我在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>
任何人有任何想法: - )?
谢谢!
答案 0 :(得分:4)
任何人都有任何想法
是的:将其分解成更小的部分。这种深度嵌套很难阅读,维护和排除故障。 : - )
如果没有您说 错误,这里有一些其他观察可能会帮助您继续进行:
http://www.fricykler.dk
上,那就是您的问题。您正在遇到Same Origin Policy。http://www.fricykler.dk
上的 ,请从ajax
来电中删除(仅使用url: '/gls.aspx...'
)。street
,zip
和其他人,否则您将成为Horror of Implicit Globals的牺牲品。建议宣布它们。谁知道,也许你覆盖了一些重要的东西,因为window
命名空间让IE 非常混乱。其他观察几乎肯定不问题:
$()
,它必须做几个函数调用,一个内存分配,如果你传递一个选择器(甚至一个ID选择器),它有做一个DOM查询。所以每当你发现自己重复它时(CompanyName = $(this).find('CompanyName').text();
,CompanyStreetName = $(this).find('StreetName').text();
,......)。考虑做一次并记住结果(var $this = $(this);
然后CompanyName = $this.find('CompanyName').text();
等。)