Я пытаюсь передать переменные из xml файла в класс отца в js: код в основном представляет собой OOP js. Класс является примером, а метод - getData().
дело в том, что вызов ajax не возвращает целых значений, просто int. Странно, я знаю.
(изменено из-за TJ Crowder :)
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: функция() {
$.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
}
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
}
Или поочередно, вы можете использовать context
возможность ajax
, чтобы изменить то, что 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
}
Две боковые ноты для вас:
Re:
function example(){
this.b;
}
Материал this.b
там не имеет никакого эффекта. Это эффективно комментарий. В частности, он не создает свойство b
на объекте.
В исходном коде, если вы не объявили a
где - то, что ты жертвой Ужас неявных Globals.