-1

如何使用 javascript 从 url 获取“h”值?(ajax,jquery 等)

网址:http ://www.youtube-mp3.org/a/itemInfo/?video_id=p8-pP4VboBk

网址内容:

info = { "title" : "Laura Branigan - Self Control", "image" : "http://i.ytimg.com/vi/p8-pP4VboBk/default.jpg", "length" : "5", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "http://ping.aclst.com/ping.php/2452159/p8-pP4VboBk?h=761944", "h" : "83135b0b3cf927b5e6caf1cf991b66b3" };

目的是从外部 URL获取并打印此值 (h) ;

83135b0b3cf927b5e6caf1cf991b66b3

4

4 回答 4

1

你可以试试这个。我认为它更简单

info.h
于 2013-06-15T17:55:05.210 回答
0

上面的字符串是一个完整的 JavaScript 对象,您可以将其视为哈希表或关联键数组,"key":"value"如果您想索引此数组或对象,您只需使用它键Object['key'],因此键可以是 int 或字符串或任何对象

于 2013-06-15T18:00:11.423 回答
0

Json 对象完美地集成在 javascript 中。

这意味着对于定义:

var myObject = { "name": "Doe", "parents": {"father": "Louis", "mother": "Ophelia"}};

您可以使用以下语句简单地访问数据:

var myName = myObject.name;
var myFather = myObject.parents.father;
var myMother = myObject.parents.mother;

它真的是那么简单。

作为对您问题的确切答案,确实是info.h.

更新:如果你的意思是来自info.pf网址的 h ,那将是

var h = info.pf.substr(info.pf.indexOf("?h=")+3, 999);
于 2013-06-15T18:10:37.777 回答
0

哦!现在我明白你的问题了。您不知道如何从 url 获取响应到 javascript 变量中。为此,您需要一个小的 ajax 脚本:

var youTubeUrl = "http://www.youtube-mp3.org/a/itemInfo/?video_id=p8-pP4VboBk";

var request = makeHttpObject();
request.open("GET", youTubeUrl, true);
request.send(null);
request.onreadystatechange = function() {
  if (request.readyState == 4){
    eval(request.responseText);//this should create the info variable.
    alert(info.h); //<<<---this should be it!
    //TODO: add your code to handle the info.h here.
    }
};

function makeHttpObject() {
  try {return new XMLHttpRequest();}
  catch (error) {}
  try {return new ActiveXObject("Msxml2.XMLHTTP");}
  catch (error) {}
  try {return new ActiveXObject("Microsoft.XMLHTTP");}
  catch (error) {}

  throw new Error("Could not create HTTP request object.");
}

代码主要复制自:https ://stackoverflow.com/a/6375580/1311434

请注意,我没有测试过这段代码,但我希望它能让你朝着正确的方向前进。确保您可以信任从原始 URL 检索到的代码,因为从另一个站点检索到的 eval() 代码有点危险。

于 2013-06-15T18:43:58.343 回答