2012-10-04 46 views
0

我有一個變量「mediaId」聲明在我的控制檯中,它一直告訴我,它是未定義的。我究竟做錯了什麼?使可變函數可用於其他函數和字符串使用

var mediaId; 

//load the XML! 
$.ajax({ 
    type: "GET", 
    url: '10461632.xml', // path to XML file 
    dataType: "xml", 
    success: function(data) { 
     $(data).find('Root').each(function(){ 

      $(this).find('Item').each(function(){ 
      mediaId = $(this).attr('videoMediaId'); // get the mediaId 
      console.log(mediaId); 

      }); 

     }); 
    } 
}); 

在我的「jsonApiCall」var它告訴我它是未定義的。

var jsonpApiCall = "http://www.domain.com/search_media/?format=jason&school=" + vid_partner + "&media_id=" + mediaId + ''; 

非常感謝!

+0

Hava你試圖調試這段代碼嗎? –

+0

你的var似乎永遠不會被定義! –

+0

你的'mediaId'會存儲最後'Item'的'videoMediaId',你確定它被定義了嗎? –

回答

0

您必須在可用於jsonpApiCall分配的範圍中定義mediaId。 + mediaId在使用前必須獲取其值。

嘗試更改線路

var mediaId; 

var mediaId = ""; 

你現在得到了同樣的錯誤?如果是,則將mediaId定義移到上方作用域中。

+0

這實際上不起作用。它不捕獲ajax請求中的mediaId。 – Justin

0

嗯,我會更相信,如果你張貼的完整代碼,但據我所知,你問一個XML當它到達誰將會分配變量,但它到來之前,你要使用它:

  1. 您要求XML
  2. 您使用變量「mediaId」
  3. XML到達,然後分配「mediaId」。

爲了避免這種情況,您不得在回調之外使用「mediaId」,所有使用它的人都必須在回調中。

+0

可以肯定的,你可以把一個的console.log()時,變量分配和其他的console.log()時,它的使用,那麼你將看到的是先執行該判決。 –

相關問題