2012-03-20 28 views
1

我有一個AJAX請求,將返回一個包含一些HTML代碼的字符串:如何從<script>標記中的AJAX響應字符串讀取變量?

返回的值是一個非常大的字符串,像這樣:

</div></div> 
<script type="text/javascript"> 
    var bld=[{"stufe":7,"gid":"4","aid":"18"}] 
</script> 
<div id="map_details">< div class="movements">... 

我唯一需要的部分是可變bld裏面有<script>標籤。

我使用jQuery在我的劇本,但由於它evals每一個單件的Ajax響應裏面<script>代碼,我不得不用另一種方法AJAX用就可以了<script>標籤返回的完整的字符串...

我認爲這可能有2個解決方案:

  1. 如果jQuery的AJAX功能evals HTML響應裏面的腳本代碼,我怎麼能訪問該變量的值?

    我已經試過了,但ajax.success函數中未定義變量bld

  2. 有沒有一種方法可以使用javascript或jquery獲取< script>標籤中的變量,當我在html字符串中獲取該值時?

回答

3

您需要將返回的數據加載到您的DOM中。它將被解析,JavaScript將運行,並且變量將在全局範圍內。如果你不想看到所有其他的東西,你可以在隱藏的div中做到這一點。

success: function(data) { 
      $('#hiddendiv').html(data); 
      console.log(bld); // <== bld is eval'ed and in global scope 
     }, 

這不是你想要的嗎?

演示:http://jsfiddle.net/jtbowden/GZvG9/1/

+0

真棒!它現在正常工作...我花了一段時間來完成這項工作,因爲我在GreaseMonkey上下文中使用它...要訪問該變量,我需要使用unsafeVariable模式.... http://wiki.greasespot.net/UnsafeWindow – user1281591 2012-03-21 00:51:55

相關問題