我正在使用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
..并且还会在firebug控制台上显示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
我不知道它是什么语言,但无论如何你需要点击右侧的绿色电话图标才能看到结果电话..
答案 0 :(得分:1)
对该AJAX请求的响应只是原始XML数据。 showIndexPhone()
正在检索数据并将变量xmlDoc
设置为它,但它没有对其进行任何其他操作。尽管有函数名称,它实际上并没有在任何地方显示它。
无论如何,您可以在PHP中使用file_get_contents()
来下载XML数据,然后使用其中一个XML解析器来解构它。编程PHP书中有一整章解释了如何处理XML。