2014-07-22 3 views
0

YQL 및 jQuery.ajax를 사용하여 다른 웹 사이트에서 인라인 JavaScript 변수를 검색하고 있습니다. 이 변수는 base64로 인코딩 된 완전한 XML 문서를 포함합니다.HTML 요소에 구문 오류 추가

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); 
    } 
}); 

여기 콘솔 로그 내게 말하고있는 작업은 다음과 같습니다

enter image description here

어떤 아이디어 나 제안이 크게 감상 할 수있다. 고마워, 모두들!

답변

1

세 가지 :

  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. 당신은 jQuery를 인스턴스에 구문 분석res.query.results에, 당신은 자바 스크립트 변수 (분명히)로 문자열을 잡고 싶어하지 않습니다.

Live example :

<!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> 
+1

감사합니다! 고맙습니다! 고맙습니다!!!!!!!!! – DaveyJake