0

我正在使用HTMlsimpledom为不再有权访问数据库的客户废弃旧网站。

该站点是一个编码噩梦,几乎没有可用的类,并且它使用的表最多。

(让事情变得更复杂一些 - 该网站是一些外语,会产生我不知道的奇怪字符。(但那是一个旁注,不是一个真正的问题))

无论如何-一切都很好并且工作正常,除了在一类页面上,它有一个 JS 锚触发器,可以在某种扭曲/老式 Ajax / JS 中打开电话号码。

链接如下所示:

<a class="icon1 clickTip" onclick="showIndexPhone(1517);showIndexMobile(1517);" title="">Phone</a>

所以当然我去搜索的showIndexPhone()功能是:

function showIndexPhone(id)
{
/*var oContent = oValue = null;
if ((oContent = document.getElementById("IndexPhone_" + id)) && (oValue = document.getElementById("IndexPhoneValue_" + id)))
{
oContent.innerHTML = oValue.innerHTML;*/
/*var oCounter = new Image();
oCounter.src = "./ctr.asp?id=" + id + "&type=2";*/
var xmlDoc = dbsRequest("./ctr.asp?id=" + id + "&type=2");
//}
} 

显然,showIndexPhone()将只是构造一个简单URL的,如下所示:

 http://123.xxx/ctr.asp?id=1517&type=3

.. 并且还将在萤火虫控制台上显示id文章 ID 和type信息类型(电话、传真、姓名等)在哪里

然后将它传递给另一个dbsRequest(URL)看起来像这样的函数:

function dbsRequest(URL) {
try {
var xmlHTTP;
if (dbsBrowserType == "ie") { // code for IE
if (window.XMLHttpRequest) {
xmlHTTP = new XMLHttpRequest();
xmlHTTP.open("GET",URL, false);
xmlHTTP.send(null);
return xmlHTTP.responseXML.documentElement;
}
else if (window.ActiveXObject) {
xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
xmlHTTP.open("GET",URL, false);
xmlHTTP.send();
return xmlHTTP.responseXML.documentElement;
}
}
else if (dbsBrowserType == "ns" || dbsBrowserType == "op") { // code for Mozilla, Opera.
//netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
xmlHTTP = new XMLHttpRequest();
xmlHTTP.open("GET",URL, false);
xmlHTTP.send(null);
return xmlHTTP.responseXML.documentElement;
}
}
catch (e) {
//if (dbsBrowserType == "ie")
// alert("error: " + e.description);
//else if (dbsBrowserType == "ns" || dbsBrowserType == "op")
// alert("error: " + e);
return null;
}
}

然后我就卡住了。

我在 JS 、 AJAX 等方面非常糟糕,当我看到响应实际上是某种形式的 XML 时——我就卡住了。我收到了大约 13,000 个条目 - 手动单击每个条目并不是一个真正的选择..

有什么方法可以获取由该 JS 触发的那些字段

或者,有没有办法找到/构造响应的 URL 并将其解析为 php?

编辑我

可以在这里找到一个真实的实时页面示例:

http://123.org.il/?pg=indx_entry&CategoryID=171&ArticleID=1517

我不知道它是什么语言,但无论如何你需要点击右边的绿色电话图标才能看到结果电话..

4

1 回答 1

1

对该 AJAX 请求的响应只是原始 XML 数据。showIndexPhone()正在检索数据并将变量设置xmlDoc为它,但它没有对它做任何其他事情。尽管有函数名称,它实际上并没有在任何地方显示它。

无论如何,您可以file_get_contents()在 PHP 中使用来下载 XML 数据,然后使用它的几个 XML 解析器之一来解构它。Programming PHP 一书中有一整章解释了如何处理 XML。

于 2013-04-03T05:15:09.487 回答