Php 如何解析已存储在变量中的html

Php 如何解析已存储在变量中的html,php,javascript,jquery,html,ajax,Php,Javascript,Jquery,Html,Ajax,我想像这样解析shoutcast页面: 所以,我只是使用ajax来调用一个php文件。php文件返回页面的所有内容。 我将html内容存储到js中的var中。代码如下: PHP: 这是我的js: var xhr = new XMLHttpRequest(); var parsed; xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { pa

我想像这样解析shoutcast页面: 所以,我只是使用ajax来调用一个php文件。php文件返回页面的所有内容。 我将html内容存储到js中的var中。代码如下: PHP:

这是我的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();
};
});
$(文档).ready(函数(){
var-songs=新数组();
var time=新数组();
对于(变量i=0;i<10;i++){
歌曲[i]=$('table:eq(2)tr:eq('+(i+1)+')td:eq(1)')。text();
时间[i]=$('table:eq(2)tr:eq('+(i+1)+')td:eq(0)')。text();
};
});
如果我复制xhr.response内容并将其放入html文件中,然后执行此js,它将返回我想要的内容。 但是我不知道当html在变量中时我该怎么做…:'(


PS:我使用wamp环境和node.js环境。

我认为,您可以使用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);

既然用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();
 });

这就是你所要求的吗?

在得到
响应后继续进行可能会帮助你

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);
var xhr=new-XMLHttpRequest();
var解析;
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4&&xhr.status==200){
parsed=$.parseHTML(xhr.response);
var-songs=新数组();
var time=新数组();
对于(变量i=0;i<10;i++){
songs[i]=$(已解析)。find('table:eq(2)tr:eq('+(i+1)+')td:eq(1)')。text();//对已解析的字符串使用find函数
time[i]=$(已解析).find('table:eq(2)tr:eq('+(i+1)+')td:eq(0)).text();
};
}
};
xhr.open(“GET”http://localhost/getsong.php",对),;
xhr.send(空);
利用

$(函数(){
$.ajax({
网址:'http://localhost/getsong.php',
数据类型:'html',
成功:函数(已解析){
var-songs=新数组();
var time=新数组();
对于(变量i=0;i<10;i++){
songs[i]=$(已解析)。find('table:eq(2)tr:eq('+(i+1)+')td:eq(1)')。text();//对已解析的字符串使用find函数
time[i]=$(已解析).find('table:eq(2)tr:eq('+(i+1)+')td:eq(0)).text();
};
}
});
});

我认为您正在寻找jQuery.parseHTML()。它将把字符串解析为DOM节点数组

下面是一个简单的例子:

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

是的,完全的,谢谢!!!我不能崩溃…但我会的,当我获得更多的声誉时!约翰的解决方案真的更好。不需要在一页中隐藏这个。但是谢谢。
$(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();
            };
        }
    });
});
$.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);
});