簡體   English   中英

將語法錯誤附加到HTML元素

[英]Appending Syntax Error to HTML Element

我正在使用YQL和jQuery.ajax從另一個網站檢索內聯JavaScript變量。 此變量包含base64編碼的完整XML文檔。

當AJAX請求運行時,我無法弄清楚如何獲取res.query.results並將其附加到動態生成的<script>元素中。

這是jQuery:

$.ajax({
    url: "http://query.yahooapis.com/v1/public/yql/dj/fsp?format=json",
    type: "GET",
    success: function(res) {
      var sc = $('script');
      $(sc).append(document.createTextNode('var '+$(res.query.results)));
      $('head').append(sc);
    }
});

這是控制台日志告訴我的內容:

在此處輸入圖片說明

任何想法或建議將不勝感激。 感謝大家!

三件事:

  1. 創建腳本元素,請執行$('<script>') ,而不是$('script') 后者搜索所有script元素。

  2. 不需要createTextNode ,jQuery將為您處理。

  3. 您正在通過調用$()來過度使用它:

      var sc = $('<script>'); sc.append(document.createTextNode('var '+res.query.results)); // ^ #1 (see below) ^ #2 
    1. 您不想再次執行$(sc) ,這毫無意義,它已經是jQuery實例。

    2. 您不想將res.query.results 解析為jQuery實例,而是想將字符串獲取為JavaScript變量(顯然)。

現場示例

<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <meta charset="utf-8">
  <title>Example</title>
</head>
<body>
<script>
  (function() {
    "use strict";

    display("Doing query...");
    $.ajax({
      url: "http://query.yahooapis.com/v1/public/yql/dj/fsp?format=json",
      type: "GET",
      success: function(res) {
        display("Got result, creating <code>script</code>...");
        var sc = $('<script>');
        sc.append('var '+res.query.results);
        $('head').append(sc);
        display("length of <code>txt</code> global variable: " + window.txt.length);
      }
    });

    function display(msg) {
      var p = document.createElement('p');
      p.innerHTML = String(msg);
      document.body.appendChild(p);
    }
  })();
</script>
</body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM