哎呀js + $.ajax 将变量传递给父类
oop js + $.ajax passing variables to father class
我正在尝试将变量从 xml 文件传递到 js 中的父类:代码基本上是OOP js。该类是示例,方法是getData()。
问题是 ajax 调用不返回整个值,只返回 int 值......很奇怪,我知道。
(由于T.J.克劳德而更改:)
function example(){
this.b;
this.str;
}
example.prototype ={
getData:function(){
$.ajax({
type: "GET",
url: "Bar.xml",
dataType: "xml",
context: this,
success: function(xml) {
this.b = parseInt($(xml).find('current_madad').text()); //int_from_xml- works!
this.str = $(xml).find('graph_title').text(); //string_from_xml - doesnt work!!
}
})//end ajax
}
};
var c = new example();
c.getData();
XML 文件在这里。已发布,以便您也可以查看该代码..
<?xml version="1.0" encoding="utf-8"?>
<root>
<Bars>
<Bar>
<bar_start>1010</bar_start>
<lower_danger_zone>1030</lower_danger_zone>
<mid_safe_zone>1050</mid_safe_zone>
<upper_danger_zone>1150</upper_danger_zone>
<upper_fbdn_zone>1200</upper_fbdn_zone>
<bar_range>200</bar_range>
<ideal_range>5</ideal_range>
<current_madad>1115</current_madad>
</Bar>
</Bars>
<Bars_Desc>
<Bar>
<graph_title>פוזיצית אפריל</graph_title>
<lower_fbdn_zone_Desc>תחום אסור תחתון תיאור</lower_fbdn_zone_Desc>
<lower_danger_zone_Desc>תחום מסוכן תחתון תיאור</lower_danger_zone_Desc>
<mid_safe_zone_Desc>תחום בטוח אמצעי תיאור</mid_safe_zone_Desc>
<mid_safe_ideal_zone_Desc>תחום בטוח פקיעה אידיאלית תיאור</mid_safe_ideal_zone_Desc>
<upper_danger_zone_Desc>תחום מסוכן עליון תיאור</upper_danger_zone_Desc>
<upper_fbdn_zone_Desc>תחום אסור עליון תיאור</upper_fbdn_zone_Desc>
</Bar>
</Bars_Desc>
</root>
ajax
调用是异步的。 getData
启动呼叫,但它稍后完成,在getData
返回后,因此当您分配给this.b
时,成功回调尚未设置a
。您需要更改getData
通话:
getData:function(){
var self = this; // <=== Set up a reference to `this`
alert("functionlasdkfj");
$.ajax({
type: "GET",
url: "Bar.xml",
dataType: "xml",
success: function(xml) {
self.b = 1; // <=== Use it to set `b` directly
}
})//end ajax
}
或者,您可以使用 ajax
的 context
选项来更改回调中this
的内容:
getData:function(){
alert("functionlasdkfj");
$.ajax({
type: "GET",
url: "Bar.xml",
dataType: "xml",
context: this, // <=== Set `context`
success: function(xml) {
this.b = 1; // <=== Now you can set `b` directly
}
})//end ajax
}
给你两个侧面说明:
再:
function example(){ this.b; }
那里
this.b
的东西没有任何影响。这实际上是一个评论。特别是,它不会在对象上创建名为b
的属性。在你的原始代码中,除非你在某处声明
a
,否则你就会成为隐式全局的恐怖的牺牲品。
明白了!我正在使用我需要的数据,并通过它在 ajax 的成功中抛出一个函数!getData:function(){
$.ajax({
type: "GET",
url: "Bar.xml",
dataType: "xml",
context: this, // <=== Set `context` - this helped me BTW
success: function(xml) {
arr.f1 = 1; //
arr.f2 = 876;
pass_data_to_data_handler_function(arr); //<= so I am waiting for response
})//end ajax
}
相关文章:
- 是否可以从父类访问子类的属性
- 使用此选项选择父类内部的类
- 引用类变量中的原型方法
- 以角度将父指令变量传递给子指令
- 访问嵌套函数结构中的JavaScript父函数变量
- 子类访问父类's闭包变量
- 如何通过Prototype或jquery移除子类的父类基类
- 如何在ajax回调中使用类变量
- JavaScript—父类和子类/对象的此问题
- Javascript ES6共享类变量
- 通过使用此组件,检索父类数据
- jQuery .not() 排除特定类的父类
- 如何在 jQuery 中获取具有特定父类的所有元素的内容,并将它们传递给 GET 变量
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- 创建新的子类对象时设置父类中定义的变量时出现问题
- 哎呀js + $.ajax 将变量传递给父类
- Javascript 从父级中定义的继承类方法访问类变量
- 如何调用父类'方法从JavaScript中的子类中删除,以便parent's的局部变量将是可访问的
- 在父类的方法中使用子类的类变量,这样变量就可以动态地改变(javascript)
- 访问父类中的变量