2014-07-23 34 views
0

我需要在服務器-A上打開一個html頁面,並從服務器-B的網頁抓取一些值。換句話說,我想在服務器A的網頁上顯示服務器B的網頁值。HTML在不同位置的頁面之間傳遞值

我需要的值的網頁(服務器B)數據正在由我無權訪問的源填充。這些值寫入看起來像這樣的變量:[[0]]。當訪問該頁面時,用當前數據填充值[[0]]。

我沒有成功嘗試將標籤附加到[[0]]以允許從表單文章中讀取服務器A並獲取方法。

我的方法是將[[0]]中的這些數據移到server-A網頁上?

服務器-B頁:

<html> 
<!-- Head information for the page including page title --> 

<head> 
    <title>Test</title> 
</head> 

<body color=#FFFFFF> 
    <!-- Start of your page body --> 
    <!-- This code displays the current tag value for index 0 
    [[0]] will be replaced by the tag value a the time the page is loaded --> 
    The value of the tag with index 0 is [[0]] 
    <!-- Added code to store [[0]] in div --> 
    <div class="pink-box" id="thatDiv">[[0]]</div> 
</body> 

</html> 

我增加了對服務器-A這個HTML/JavaScript和我正在與COR描述的錯誤:

<!doctype html> 
<html lang="en"> 

<head> 
    <meta charset="utf-8"> 
    <title>Get Div</title> 
    <style> 
    body { 
     font-size: 12px; 
     font-family: Arial; 
    } 
    </style> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
</head> 

<body> 
    <b>Div:</b> 
    <ol id="Result"></ol> 
    <script> 
    $("#Result").load("http://192.168.1.168/user/default.html #thatDiv"); 
    </script> 
</body> 

</html> 
+0

你可以使用捲曲爲此,但它是一種混亂的HTML處理這樣的數據...如果服務器B有一個feed ... – Stefan

+0

如果你想從客戶端做到這一點,你也可以在javascript中使用ajax調用服務器B. – Alwin

回答

0

你可以得到的內容HTML文件並找到開始的「[[」和結尾「]]」並獲取它們之間的數據。

<?php 
$serverBFile = "http://www.serverB.com/file.html"; 
$serverBHTML = file_get_contents($serverBFile); 
$serverBStart = stripos($serverBHTML,"[["); 
$serverBEnd = stripos($serverBHTML,"]]"); 
$serverBLength = $serverBEnd - $serverBStart; 
$serverBValue = substr($serverBHTML, $serverBStart, $serverBLength); 
?> 
0

我過去做過這件事的方式是使用DOM解析工具,如jQuery。

如果您有權訪問node.js服務器,則可以使用jQuery插件加載服務器B的網頁,然後使用所需的標記查詢常量,例如ID,類名,標記名,位置等。

<html> 
<!-- Head information for the page including page title --> 
<head> 
<title>Test</title> 
</head> 
<body color=#FFFFFF> 
<!-- Start of your page body --> 
<!-- This code displays the current tag value for index 0 
[[0]] will be replaced by the tag value a the time the page is loaded 
let's say [[0]] becomes a <div>--> 
<div class="pink-box" id="thatDiv">data I want</div> 
</body> 
</html> 

從這裏,這也很容易通過$('#thatDiv').text()$('.pink-box').text()提取文本。

這是一個相當簡單的解決方案。一旦將這個值傳遞給節點服務器中的變量,只需公開一個REST調用,即您的服務器 - 網頁可以發出AJAX請求。

我說使用節點的原因是因爲看起來這個頁面的動態內容必須用JavaScript加載。如果我知道更多關於這個頁面如何相互作用,我可以給你更具體的解決方案,你的問題,

+0

我可以在服務器B上訪問的所有東西就是html頁面。我把我的數據放入div。我可以通過節點js和jQuery在服務器-A上執行讀取該div嗎?還是需要首先將div移動到服務器-B上的javascript變量?感謝您的答覆。 – user3258873

+0

只要CORS沒有妨礙你,你可以從任何JavaScript環境讀取div。 HTML響應的「Access-Control-Allow-Origin」必須包含您正在發出請求的域,或者設置爲「*」。 – kiansheik

+0

請參閱上面我添加的代碼來閱讀DIV。我現在收到你提到的錯誤:這是我得到的錯誤: 跨源請求被阻止:相同的源策略不允許讀取http://192.168.1.168/user/default.html處的遠程資源。這可以通過將資源移動到相同的域或啓用CORS來解決。你能解釋一下我會在哪裏解決你提到的*錯誤。 – user3258873