Javascript 如何调用函数inside.ajax?
我有下面的代码,我想在这里用下面的代码调用initialize函数; google.maps.event.addDomListener(窗口“加载”,初始化) 但我得到了这个错误;错误:未定义初始化 这里怎么了Javascript 如何调用函数inside.ajax?,javascript,jquery,Javascript,Jquery,我有下面的代码,我想在这里用下面的代码调用initialize函数; google.maps.event.addDomListener(窗口“加载”,初始化) 但我得到了这个错误;错误:未定义初始化 这里怎么了 $(function CheckinMap() { $.ajax({ type: "GET", url: "content/home/index.cs.asp?Process=ViewCheckinMap",
$(function CheckinMap() {
$.ajax({
type: "GET",
url: "content/home/index.cs.asp?Process=ViewCheckinMap",
success: function initialize(data) {
var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 2,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP,
maxZoom: 4
});
var markers = [];
for (var i = 0; i < data.users.length; i++) {
var location = data.users[i];
var latLng = new google.maps.LatLng(location.latitude,
location.longitude);
var marker = new google.maps.Marker({
position: latLng
});
markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers);
},
error: function (data) {
$("#checkinmap").append(data);
}
});
});
google.maps.event.addDomListener(window, 'load', initialize);
$(函数CheckinMap(){
$.ajax({
键入:“获取”,
url:“content/home/index.cs.asp?Process=ViewCheckinMap”,
成功:函数初始化(数据){
var center=new google.maps.LatLng(48.404840395764175,2.6845264434814453);
var map=new google.maps.map(document.getElementById('map'){
缩放:2,
中心:中心,,
mapTypeId:google.maps.mapTypeId.ROADMAP,
最大缩放:4
});
var标记=[];
对于(var i=0;i
如果您想对jQuerysuccess
方法和adddomstener
第三个参数都使用函数,那么您必须在定义它时将其存储在某个位置,而不是将其直接传递给success
对于调用ajax
和addDomLister
,这个地方也必须在范围之内
移动函数初始化(数据)
,使其显示在当前第1行之前
然后说
success:initialize
您正在定义initialize
内部CheckinMap
范围,然后在代码的最后一行尝试在该范围之外使用它。如果确实需要在两个位置都使用它,请在外部定义它,然后在success
属性值中引用If
function initialize(data) {
var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 2,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP,
maxZoom: 4
});
var markers = [];
for (var i = 0; i < data.users.length; i++) {
var location = data.users[i];
var latLng = new google.maps.LatLng(location.latitude,
location.longitude);
var marker = new google.maps.Marker({
position: latLng
});
markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers);
}
$(function CheckinMap() {
$.ajax({
type: "GET",
url: "content/home/index.cs.asp?Process=ViewCheckinMap",
success: initialize,
error: function (data) {
$("#checkinmap").append(data);
}
});
});
google.maps.event.addDomListener(window, 'load', initialize);
函数初始化(数据){
var center=new google.maps.LatLng(48.404840395764175,2.6845264434814453);
var map=new google.maps.map(document.getElementById('map'){
缩放:2,
中心:中心,,
mapTypeId:google.maps.mapTypeId.ROADMAP,
最大缩放:4
});
var标记=[];
对于(var i=0;i
实际上,使用函数表达式始终会生成匿名函数,并且不会在当前上下文中创建引用,即使匿名函数已命名。匿名函数的名称是在函数本身的上下文中定义的,也就是说,它在匿名函数内部可用,而不是在外部作用域中。任何时候创建任何对象(包括函数)时,您也会创建对它的单个引用,该引用可以在使用该对象后立即删除,除非您将其保留在某个位置。我说的是这些引用,不确定您是否也这样做。console.log
或使用网络监视器对您收到的数据调试浏览器工具,并确保您得到了预期的结果,而不是一些错误消息。当成功事件处理程序启动时,它会从Ajax请求中传递数据。然后,窗口加载事件处理程序被触发,它得到一个事件对象……并且来自Ajax请求的数据还没有从服务器检索到事件。仔细观察之后,在加载时运行初始化函数没有任何意义。