2012-05-30 50 views
-3

我想從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> 
+0

歡迎** **異步的奇妙世界!你不能那樣做。 – SLaks

+0

其中是「父」類,只有一個類似乎沒有擴展任何東西 – Esailija

回答

1

明白了!我正在使用我需要的數據並通過它拋出一個函數裏面 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 

}

1

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 
} 

或者交替,你可以使用的ajaxcontext選項來改變什麼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 
} 

兩個側筆記你:

  1. 回覆:

    function example(){ 
        this.b; 
    } 
    

    this.b東西沒有任何效果。這實際上是一條評論。特別是,它不會在對象上創建名爲b的屬性。

  2. 在您的原始代碼中,除非您在某個地方聲明瞭a,否則您將陷入The Horror of Implicit Globals

+0

好吧,我已經使用它,它將值傳遞給第二次調用的類(我設置了一個間隔數據將被刷新)。但它只能提取整數數據而不是整數!嘗試了一切......怪異的不? – devmonster

+0

編輯了問題主體,以便您可以看到 – devmonster

+0

@ user1392330:這表明XML中沒有'graph_title' XML節點。 –