2014-10-04 75 views
0

我整晚都在考虑解决方案,但我无法弄清楚。从URL数据中获取内容按类或ID使用JS

我有下载网址内容PHP代码:

function get_data($url) { 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
} 
$data = get_data($url); 

,我想从div的获取内容或任何从这个类名或ID,所以我发这个变量JS是这样的:

<script> 
    var data = <?php echo json_encode($data); ?>; 

    alert(data); 
    //alert shows all code of downloaded URL 
    //$(".content").html(data); 
    //this line show whole page but I want only specific element/class 
</script> 

我该如何做到这一点?假设我想从JavaScript中的“data”变量中获得class =“productMainTitle”的H1标签内容?

任何提示将不胜感激!

回答

1

取决于正是你想做的事。

1只发送HTML客户端

见@ ARTM的答案的相关片段。

2.将所有的HTML客户端,它有理清

<script> 
    var $data = $("<?php echo $data; ?>"); 
    $data.find("h1.productMainTitle").appendTo(".content"); 
</script> 

假设json_encode()是不必要的。如果我错了,请重新插入。

如果你只想要“h1.productMainTitle”片段,这比(1)效率低,但如果你想要更多的片段,那么这是一个可行的方法。

+0

这就是我正在寻找的!非常感谢,它工作完美:)我猜json_encode是需要的,因为没有这个代码再次显示整个页面^ – 2014-10-04 11:29:29

2

使用的DOMParser

var parser = new DomParser(); 
var doc = parser.parseFromString(data, "text/xml"); 

然后得到你想要从文档照常

doc.getElementById("id") 

元素及其HTML分配给您的股利。

编辑:

$("#content").html(doc.getelementById("col1-755").text()); 
+0

感谢quicke答案。不幸的是它不工作。 var data = <?php echo json_encode($ data); ?>; alert(data); var parser = new DomParser(); var doc = parser.parseFromString(data,“text/xml”); ('。content')。doc.getElementById(“col-755”)。text(); 在变量数据我只有下载页面的源代码而不是xml代码我认为。 – 2014-10-04 11:20:38

+0

您是否试图从加载的文档中获取#col-755的文本?然后使用doc.getElementById(“col-755”)。文本(); – artm 2014-10-04 11:22:31

+0

是的,但我需要将此值分配给我的页面上的div – 2014-10-04 11:24:41

0

使用按URL打开子页面,并在必要时隐藏它们。

现在我们可以做到没有URL:创建空框架并强制编写一些html的权利。

尝试通过步骤以下脚本(按动按钮),看看这是怎么回事:

<body> 
    <button onclick="createFrame();">createFrame</button> 
    <button onclick="getElement();">getElement</button> 
    <button onclick="closeFrame();">closeFrame</button> 
    <button onclick="showExtractedElement();">showExtractedElement</button> 
    <script> 
    var frame 
     , frameDoc 
     , elem 
     , htmlData = '<html><body><h1 class="myClass">Hello</h1></body></html>' 
      /*somehow we got this string containing html data*/ 

    function createFrame() 
    { 
     frame = document.createElement("iframe"); 
     frame.setAttribute('hidden', ''); // on debug remove this line to see the frame 
     document.body.appendChild(frame); 
     frame.contentDocument.write(htmlData) 
    } 

    function getElement() 
    { 
     elem = frame.contentDocument.querySelector('.myClass') 
    } 

    function closeFrame() 
    { 
     document.body.removeChild(frame); 
    } 

    // the extracted element remains 
    function showExtractedElement() 
    { 
     console.log(elem) 
    } 

    // call this method from console or script to do all the magic 
    function doEverything() 
    { 
     createFrame() 

     getElementFromAnotherPage() 

     closeFrame() 

     showExtractedElement() 
    } 
    </script> 
</body>