修复了ie / alert - Jquery.ajax的Bug
IE7 Bug fixed w/ alert - Jquery.ajax
我有一个错误,只有在IE7,当我把一个警告在代码-问题是固定的。如下所述:http://stackoverflow.com/questions/7220603/weird-problem-with-javascript-jquery-which-get-fixed-using-alert在异步调用中很可能会出现计时问题。
我正在使用jQuery。ajax调用并成功调用函数-我认为在数据返回后调用…
$.ajax({
type: "POST",
url: 'myurl.aspx/myMethod',
data: "{ id: 3 }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
DisplayMap(msg.d);
}
});
,在我的display Map函数中,我在谷歌地图上设置坐标来勾勒出一个属性,如下所示:
function DisplayMap(data) {
var defaultMapZoom = data.Outline.ZoomLevel;
var centerCoordinate = new google.maps.LatLng(data.Outline.Latitude, data.Outline.Longitude);
var myOptions = {
zoom: defaultMapZoom,
center: centerCoordinate,
mapTypeId: google.maps.MapTypeId.HYBRID,
scrollwheel: false
};
map = new google.maps.Map(document.getElementById('googleMap'), myOptions);
var mylistener = google.maps.event.addListener(map, 'tilesloaded', function() {
google.maps.event.removeListener(mylistener);
setTimeout(EnableSearch, 500);
});
setUpProertyBorder(data.Outline.Coordinates);
}
function setUpProertyBorder(coordinates) {
var coordsLatLon = createGoogleMapCoordinateArray(coordinates);
var coordOutline = new google.maps.Polygon({
path: coordsLatLon,
strokeColor: '#ff0000',
strokeOpacity: 1.0,
strokeWeight: 2,
fillOpacity: 0
});
coordOutline.setMap(map);
}
function createGoogleMapCoordinateArray(c) {
var coords = [];
for (var x = 0; x < c.length; x++) {
coords.push(new google.maps.LatLng(c[x].Latitude, c[x].Longitude));
}
return coords;
}
EnableSearch函数只是删除了我在谷歌地图上的覆盖。这在ie8中工作得很好。9、FF &Chrome -但在IE7中,我没有从调用setuppropertyborder中得到大纲设置。
我"认为"jQuery中的"success"函数。ajax只在数据返回后才被调用-因此我的想法是我的数据在那里-但它不在IE7中。
现在,如果我在setuppropertyborder中放置一个警告-它突然在IE7中工作(???)建议吗?我对什么视而不见?
我有一个类似的问题,假设实例化映射是太慢的过程和DOM没有准备好新的更新,直到这一刻(只读):
coordOutline.setMap(地图);
所以如果你尝试更新DOM,它将导致失败。通过在使用map函数之前设置超时来解决,在您的情况下,SMTH就像这样
setTimeout(函数(){setUpProertyBorder (data.Outline.Coordinates);}, 200年),
这可能不是最好的方法,但它是有效的
尽管成功语句仅在从Ajax请求中获取数据时运行,但它取决于何时请求实际的Ajax调用。
执行Ajax调用的Javascript在运行之前是否等待文档加载,例如:
<script type="text/javascript">
$(document).ready(function() {
// Your code here...
});
</script>
你也可以通过使用defer命令确保JavaScript在页面加载后被加载:
<script type="text/javascript" defer="defer">
$(document).ready(function() {
// Your code here...
});
</script>
试一下,看看是否能修复它。
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 将curl查询转换为jQuery.ajax()
- jQuery AJAX write to XML
- jQuery Ajax GET请求工作不正常
- jquery ajax https调用给出ERR_INSECURE_RESPONSE
- VB NET JQUERY AJAX上出现错误500
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- Jquery/Ajax.serialize()未完全工作
- 页面加载之前的jQuery Ajax加载程序
- jquery/ajax无限滚动事件
- 使用Jquery$.ajax将json数据传递给servlet(doPost)
- 如何将给定的curl命令复制为jquery ajax请求
- 使用 JQUERY AJAX (Spring MVC) 从控制器中删除
- Twitter API在jQuery AJAX中设置授权头
- AngularJS JQuery Ajax表单提交等效
- jQuery Ajax.ajaxSuccess()事件未激发
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- jQuery AJAX总是出错
- jQuery Ajax数组序列化错误
- jQuery AJAX获取Vimeo缩略图