Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ajax成功调用运行javascript函数_Javascript_Jquery_Ajax - Fatal编程技术网

从ajax成功调用运行javascript函数

从ajax成功调用运行javascript函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,我目前正在使用GoogleMaps,我想在数据库中保存一些位置,并通过ajax调用检索它们,然后从这些位置生成JavaScript对象 至于代码,我真的不知道为什么这不起作用,有人能帮我澄清一下吗 Chrome控制台: 未捕获类型错误:this.processData不是函数 var位置={ 计数:0, 地点:[], processData:函数(数据){ 控制台日志(数据); }, getData:函数(){ "严格使用",; jQuery.ajax({ 键入:“get”, url:“../p

我目前正在使用GoogleMaps,我想在数据库中保存一些位置,并通过ajax调用检索它们,然后从这些位置生成JavaScript对象

至于代码,我真的不知道为什么这不起作用,有人能帮我澄清一下吗

Chrome控制台: 未捕获类型错误:this.processData不是函数
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分钟的延迟会变小