[英]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);
}
});
這是控制台日志告訴我的內容:
任何想法或建議將不勝感激。 感謝大家!
三件事:
要創建腳本元素,請執行$('<script>')
,而不是$('script')
。 后者搜索所有script
元素。
不需要createTextNode
,jQuery將為您處理。
您正在通過調用$()
來過度使用它:
var sc = $('<script>'); sc.append(document.createTextNode('var '+res.query.results)); // ^ #1 (see below) ^ #2
您不想再次執行$(sc)
,這毫無意義,它已經是jQuery實例。
您不想將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.