2013-03-30 50 views
0

我正在使用rails中的公共API,這非常簡單。 目前,我的標記類中有一個jsonp回調,調用時看起來如下所示。通過jQuery對象與jQuery呈現JavaScript

JSON:

{ 
    "tag": 
    { 
     "id": 1, 
     "tag_code": "<script type=\"text\/javascript\">alert(\"hello world\");  <\/script>" 
    } 
} 

我的目標是讓這個代碼到遠程頁面。

我已經嘗試使用ajax來做到這一點,但我明白,jquery不允許外部腳本標記爲了安全目的被加載到頁面上。

JQuery的遠程頁面

function fetchTagData(id) 
{ 
    $.ajax(
    { 
     url: "http://localhost:3000/tag/" + id + ".js", 
     dataType: "jsonp", 
     type: "GET", 
     processData: false, 
     contentType: "application/json", 
     success: function(data) 
     { 
      var code = data['tag']['tag_code']; 
      console.log(code); 
      $('#test').append(code); 
     } 
    }); 
}; 

,當我查看控制檯,我看到JS在其所有的榮耀,並出現警告框。當我查看源代碼或檢查元素時,js不在頁面上。

有沒有人有一個想法,我可以如何讓js出現在頁面上使用類似的方法或相同?

+2

如果使用傳統的「查看源文件」功能,您將看到的頁面,因爲它是當它被裝。 – mzedeler

+0

Firefox和Firefox上的Chrome和Firebug具有檢查器,可以讓您在任何給定時間查看文檔的外觀。 – mzedeler

+2

您發佈的數據是JSON,但您告訴jQuery期望JSONP。這是行不通的。 JSONP無非是包含一個外部JavaScript文件。 JSON本身不是有效的JavaScript。 –

回答

0

JSON喜歡使用的eval這個

{ 
    "tag": 
    { 
     "id": 1, 
     "tag_code": "alert(\"hello world\");" 
    } 
} 

運行代碼

function fetchTagData(id) 
{ 
$.ajax(
{ 
    url: "http://localhost:3000/tag/" + id + ".js", 
    dataType: "jsonp", 
    type: "GET", 
    processData: false, 
    contentType: "application/json", 
    success: function(data) 
    { 
     var code = data['tag']['tag_code']; 
     console.log(code); 
     eval(code); 
    } 
}); 
};