当前位置: 首页 > 面试题库 >

将$ .getJSON()与JavaScript对象内的回调一起使用

况喜
2023-03-14
问题内容

我试图建立一个对象,使其具有封装的$ .getJSON方法。这是我的设置:

function Property(price, deposit){
  this.price = price;
  this.deposit = deposit;
  this.getMortgageData = function(){
    $.getJSON('http://example.com/index?p='+this.price+'&d='+this.deposit+'&c=?', function(data){
        this.mortgageData = data;
    });
  }
  return true;
}

现在的问题似乎是我没有访问有意义的getJSON回调函数中的“ this”。

这种功能是否有解决方法,或者我只是在想完全错误的方式?我以前只真正使用过PHP OO编码,所以JS OO对我来说有点新。

我尝试过的其他事情是:

  function Property(price, deposit){
  this.price = price;
  this.deposit = deposit;
  this.getMortgageData = function(){
    this.mortgageData = $.getJSON('http://example.com/index?p='+this.price+'&d='+this.deposit+'&c=?', function(data){
        return data;
    });
  }
  return true;
}

但是,

var prop = new Property();
prop.getMortgageData();
// wait for the response, then
alert(prop.mortgageData.xyz); // == undefined

问题答案:

您的第一次尝试已经结束,但是正如您所说的,您无法this在回调内部进行访问,因为它引用了其他内容。而是this在外部作用域中分配另一个名称,然后访问该名称。回调是一个闭包,可以在外部范围内访问该变量:

function Property(price, deposit){
  this.price = price;
  this.deposit = deposit;
  var property = this; // this variable will be accessible in the callback, but still refers to the right object.
  this.getMortgageData = function(){
    $.getJSON('http://example.com/index?p='+this.price+'&d='+this.deposit+'&c=?', function(data){
        property.mortgageData = data;
    });
  }
  return true;
}


 类似资料:
  • 本文向大家介绍如何将两个JavaScript对象与纯JavaScript连接在一起?,包括了如何将两个JavaScript对象与纯JavaScript连接在一起?的使用技巧和注意事项,需要的朋友参考一下 假设我们有两个这样定义的对象- 我们需要编写一个JavaScript函数,该函数接受两个这样的对象并合并为一个对象。 换句话说,我们需要或多或少地实现Object.assign()函数的功能。 示

  • 问题内容: 我正在像这样的双循环内进行一些计算: 有没有办法让Loop在执行功能之前先完成?或程序在继续执行… 之前知道循环是否完成的任何方式 我可能会错过一些论坛,但是我发现的那些论坛并没有帮助我实现我想要实现的目标,而且我在NodeJS中做到了这一点,同时我也在问是否有现有的图书馆可以实现这一目标。 我忘了加起来,还是应该再问一个问题? 有没有一种方法可以同步进行迭代,即仅在当前迭代完成后才继

  • 问题内容: 我想这样做: 与angular-datatables模块一起使用。我已经试过了: 控制者 视图 但这根本不起作用,并且我收到此错误消息: DataTables警告:表格ID = DataTables_Table_0-Ajax错误。有关此错误的更多信息,请参见http://datatables.net/tn/7 另外,我无法使用任何Ajax选项从URL获取json数据,因为我的angul

  • 问题内容: 我试图在jQuery中使用getJSON函数导入一些数据并触发回调函数。回调函数未运行。但是,如果我使用get函数尝试相同的操作,则效果很好。奇怪的是,即使我将“ json”作为类型传递,它也可以与get函数一起使用。为什么会这样呢?我在Firefox 3和IE 7中测试了以下文件: 只要我访问的URL在同一个域中,这似乎都会发生。我尝试传递一些数据,但这没有什么不同。 当然,可以像在

  • 问题内容: 我正在尝试在Swift中使用彩色图案。Apple在Quartz 2D编程指南的“ 绘画彩色图案”部分中提供了一个不错的Objective- C示例。但是,从Objective-C转换所有语法并非易事。另外,我想在绘图回调中使用该参数,并且没有这样做的示例。 这是我的第一次尝试: 显然,这需要一个合适的参数值,我需要将其作为参数传递给初始化程序。 完成此操作的正确语法是什么? 问题答案:

  • 问题内容: 在我的应用程序中,我需要通过ajax发布将javascript Array对象发送到php脚本。像这样: 数组的索引是字符串,而不是int,因此,诸如saveData.join(’&’)之类的东西不起作用。 有想法吗? 提前致谢 问题答案: 如果不是数组,则不要使其成为数组,而应将其作为对象: 以与Arrays相同的方式进行操作只是利用Javascript对Arrays的处理方式,而不