如何解析已经存储在变量中的html
how to parse html already store in variable
我想解析一个shoutcast页面,如下所示:http://relay.181.fm:8800/played.html所以,我只是让ajax调用一个php文件。php文件返回页面的所有内容。我将html内容存储到js中的一个var中。这是代码:PHP:
function getcontent($server, $port, $file){
$cont = "";
$ip = gethostbyname($server);
$fp = fsockopen($ip, $port);
if (!$fp){
return "Unknown";
}
else{
$com = "GET $file HTTP/1.1'r'nAccept: */*'r'nAccept-Language: de-ch'r'n"
."Accept-Encoding: gzip, deflate'r'nUser-Agent: Mozilla/4.0 (compatible;"
." MSIE 6.0;Windows NT 5.0)'r'nHost: $server:$port'r'n"
."Connection: Keep-Alive'r'n'r'n";
fputs($fp, $com);
while (!feof($fp))
{
$cont .= fread($fp, 500);
}
fclose($fp);
$cont = substr($cont, strpos($cont, "'r'n'r'n") + 4);
return $cont;
}
}
echo (getcontent("relay.181.fm", "8800", "/played.html"));
这是我的js:
var xhr = new XMLHttpRequest();
var parsed;
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
parsed=xhr.response;
}
};
xhr.open("GET", 'http://localhost/getsong.php', true);
xhr.send(null);
这就是我想要得到的:
$(document).ready(function(){
var songs=new Array();
var time=new Array();
for (var i = 0; i < 10; i++) {
songs[i]=$('table:eq(2) tr:eq('+(i+1)+') td:eq(1)').text();
time[i]=$('table:eq(2) tr:eq('+(i+1)+') td:eq(0)').text();
};
});
如果我复制xhr.response内容并将其放在html文件中,然后执行这个js,它会返回我想要的内容。但我不知道当html在一个变量中时我该怎么做…:'(
附言:我在一个wamp环境上工作。,还有一个node.js环境。
既然你用jQuery标记了它,为什么不使用内置的ajax功能:
$.ajax({
url: 'http://localhost/getsong.php',
dataType: 'html'
}).done(function(data){
//do something with the HTML
var $html = $(data),
tdtexts = $html.find('table:eq(2) tr td:first').text();
});
这就是你想要的吗?
我认为,您可以使用innerHTML来解决
var xhr = new XMLHttpRequest();
var parsed;
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
parsed=xhr.response;
document.getElementById('#div').innerHTML = parsed;
}
};
xhr.open("GET", 'http://localhost/getsong.php', true);
xhr.send(null);
在获得response
后继续操作可能会对您有所帮助,
var xhr = new XMLHttpRequest();
var parsed;
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
parsed=$.parseHTML(xhr.response);
var songs=new Array();
var time=new Array();
for (var i = 0; i < 10; i++) {
songs[i]=$(parsed).find('table:eq(2) tr:eq('+(i+1)+') td:eq(1)').text();// use find function for parsed string
time[i]=$(parsed).find('table:eq(2) tr:eq('+(i+1)+') td:eq(0)').text();
};
}
};
xhr.open("GET", 'http://localhost/getsong.php', true);
xhr.send(null);
通过使用$.ajax()
$(function(){
$.ajax({
url:'http://localhost/getsong.php',
dataType:'html',
success:function(parsed){
var songs=new Array();
var time=new Array();
for (var i = 0; i < 10; i++) {
songs[i]=$(parsed).find('table:eq(2) tr:eq('+(i+1)+') td:eq(1)').text();// use find function for parsed string
time[i]=$(parsed).find('table:eq(2) tr:eq('+(i+1)+') td:eq(0)').text();
};
}
});
});
我想你正在寻找jQuery.parseHTML()。它将把你的字符串解析成一个DOM节点数组。
http://api.jquery.com/jQuery.parseHTML/
以下是您案例的一个快速示例:
$.get('http://relay.181.fm:8800/played.html')
.done(function(data) {
var parsed = $.parseHTML(data);
// Now parsed is an array of DOM elements which you can use selectors on, eg:
var song1 = $(parsed).find('table:eq(2) tr:eq(1) td:eq(1)').text();
console.log(song1);
});
相关文章:
- 通过javascript重定向html传递php变量
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 来自文本输入null的html javascript变量
- 如何在HTML中显示服务器对象变量
- 在索引.html和应用.js [node.js] 之间共享变量
- 节点.js将变量显示为 HTML
- 从Javascript和Php变量创建Html模板文档
- 在if语句下的html中使用javascript变量
- 操作javascript变量[HTML]以只显示文本
- 在HTML包围的javascript中添加两个变量
- 变量不递增如何I'我喜欢html按钮点击的时候
- 将变量从html传递到javascript再传递到php
- HTML 按钮点击函数无法使用 jQuery 变量作为参数
- 使用JavaScript变量更改HTML组类
- 如何在html中将字符串转换为数字?以及如何将变量传递到scriptlet代码中
- $Scope变量在HTML中不更新,尽管在控制器中不断更新
- 使用php在html中搜索硬编码的JavaScript变量
- 将html变量从Ajax传递到PHP
- Jquery 不会正确更新带有变量 (html) 的文本框
- 如何在JQuery中克隆变量html元素