从ajax成功调用运行javascript函数
我目前正在使用GoogleMaps,我想在数据库中保存一些位置,并通过ajax调用检索它们,然后从这些位置生成JavaScript对象 至于代码,我真的不知道为什么这不起作用,有人能帮我澄清一下吗 Chrome控制台: 未捕获类型错误:this.processData不是函数从ajax成功调用运行javascript函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我目前正在使用GoogleMaps,我想在数据库中保存一些位置,并通过ajax调用检索它们,然后从这些位置生成JavaScript对象 至于代码,我真的不知道为什么这不起作用,有人能帮我澄清一下吗 Chrome控制台: 未捕获类型错误:this.processData不是函数 var位置={ 计数:0, 地点:[], processData:函数(数据){ 控制台日志(数据); }, getData:函数(){ "严格使用",; jQuery.ajax({ 键入:“get”, url:“../p
var位置={
计数:0,
地点:[],
processData:函数(数据){
控制台日志(数据);
},
getData:函数(){
"严格使用",;
jQuery.ajax({
键入:“get”,
url:“../php/functions/getLocations.function.php”,
数据类型:“json”,
成功:功能(数据){
这个.processData(数据);
}
});
}
};代码>关键字此
指的是它在其中初始化的范围。
因此,在您的情况下,它是success
-函数的范围。它不涉及对象本身
为此,您必须缓存对对象的引用,以便在success
-函数中使用它,或者引用对象本身
对象引用:
jQuery.ajax({
type: 'get',
url: '/echo/json/',
dataType: 'json',
success: function(data) {
Locations.processData(data);
}
});
缓存此
getData: function() {
'use strict';
let _this = this;
jQuery.ajax({
type: 'get',
url: '/echo/json/',
dataType: 'json',
success: function(data) {
_this.processData(data);
}
});
}
此
指向ajax设置对象。可以使用$.proxy,也可以在将其存储在变量中后使用this
,以便将目标锁定在正确的上下文中
getData: function() {
'use strict';
let _this = this;
jQuery.ajax({
type: 'get',
url: '/echo/json/',
dataType: 'json',
success: function(data) {
_this.processData(data);
}
});
}
getData: function () {
'use strict';
var thisLocation = this;
jQuery.ajax({
type: 'get',
url: '../../php/functions/getLocations.function.php',
dataType: 'json',
success: function (data) {
thisLocation.processData(data);
答案就在这里……举个例子。亚当是对的,但我明白了。我会努力适应的it@Smooth增加了2个具体例子。我个人会选择第二个。在你编辑问题的时候,我做了一些类似的事情。我把结果贴在了我的帖子上。谢谢大家!@KevinB-回答者没有提供代码示例,只是暗示了这样一个事实,即当我发表评论时,这个
是错误的,为什么没有用?答案是正确的。dupe目标上已存在答案。重复答案->没用。@Sushanth——你不应该一开始就把它贴出来。您有足够的代表投票,可以作为副本关闭。对于已经有几十个重复答案的简单问题,不要竞相发布答案。@meagar会记住这一点。:)我在编辑这篇文章时遇到了一个新问题,它仍然是一个骗局,但还有一个问题:你不能从异步函数返回。这是不可能的。我回滚了问题,因为您的编辑使现有答案无效。如果你有一个新问题,你应该把它当作一个新问题来问。然而,你要问的是一个非常流行的骗局;你应该先搜索。所以当另一个问题出现时,我需要每90分钟等待一次?哦,我可以从异步函数function getLocation(){return$.ajax({type:'get',url:'../../php/functions/getLocations.function.php',dataType:'json',success:function(data){return data;})返回;}返回getLocation()代码>“哦,我可以从异步函数返回”嗯,你可以试试,但它不起作用。如果你提出好问题和/或积极参与社区活动(例如回答问题和接受投票),90分钟的延迟会变小