如何在网页上的json中包装可执行的javascript

时间:2013-09-28 12:14:50

标签: javascript json parsing

我很抱歉也许我的问题让任何人都感到困惑..实际上我没有正确的方式来说明以下代码是javascript代码还是json ..

请参阅我制作的示例代码,它运行正常:

var txt = '{ "title" : "Asian Dad: B Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "", "h" : "a80b4ceb1ad73a0222ca7a78dc448213" }';

var obj = eval ("(" + + ")");

document.getElementById("fname").innerHTML=obj.title 
document.getElementById("lname").innerHTML=obj.h 

此代码正在打印标题&的值。小时。

但我的实际问题是在var txt =“.....”中给出的代码!实际上来自外部网站......我在这里发布了这个网址:

http://www.youtube-mp3.org/a/itemInfo/?video_id=IN7o2Iy89WQ

你可以看到它有点奇怪......

它看起来像一个json,但它也包含可执行的javascript代码......

希望你能注意到......

我的问题是,我想从外部URL获取var txt ='......'值,无论我尝试失败的逻辑是什么。什么都没有用。我是这个可执行的javascript代码的新手,无法找到通过外部URL加载它的方法..

任何人都可以帮助我知道如何解析.title& .h数据直接通过网址?

请提供任何帮助或建议。

已编辑:

朋友们,我没有办法在我的脚本中连接外部网址以获取obj.title的价值......你有我吗?本脚本使用var txt ='{....}'中的示例代码;我想用url http://www.youtube-mp3.org/a/itemInfo/?video_id=IN7o2Iy89WQ替换它,因为我想从该外部URL获取obj.title值。这是我计划的一部分。

希望这会有所帮助。

2 个答案:

答案 0 :(得分:0)

var txt = '{ "title" : "Asian Dad: B Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "", "h" : "a80b4ceb1ad73a0222ca7a78dc448213" }';

var obj = JSON.parse(txt);


document.getElementById("fname").innerHTML=obj.title 
document.getElementById("lname").innerHTML=obj.h 

该代码段不包含可执行代码,这很好用(jsfiddle here

答案 1 :(得分:0)

如果您信任http://www.youtube-mp3.org网站,则可以使用动态创建的<script>标记获取该数据,并编写一个检查数据是否已可用的函数。

var script = document.createElement('script');
script.src = 'http://www.youtube-mp3.org/a/itemInfo/?video_id=IN7o2Iy89WQ';
document.body.appendChild(script);

var dataReady = function() {
   if (window.info)   {
       document.getElementById("fname").innerHTML=info.title; 
       document.getElementById("lname").innerHTML=info.h; 
   } else {
       //script haven't loaded yet, try again in half a second
       setTimeout(dataReady, 500);
   }
}
dataReady();

我正在检查window.info,而不是window.txt。这是因为您提供的网址返回结果如下:

info = { "title" : "Asian Dad: B  Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving",  "progress_speed" : "",  "progress" : "",  "ads" : "",  "pf" : "",  "h" : "154d6f3b7ac53fa2bb9f7cc5011d1c5d"  };

因此,info变量代替txt

再一次,你必须相信youtube-mp3.org这样做,结果应该有相当稳定的格式,或者你最终可以不断检查它们是否有任何改变。