求解!JS ajax 问题
http://mbox.dj527.com/
这个 把页面仿下来!! 模版没错!
就是不嫩播放 播放列表都没有!
http://dj.yulel.com/
就显示 载入加..
不管直接用http://mbox.dj527.com/js/js.js
还是保存到本地改JS 都不行!
不管直接用http://mbox.dj527.com/js/js.js 这个!
还是把JS.js保存到服务器上! 列表 播放 都不显示!
http://mbox.dj527.com/list.asp?menu= 这个不是?
播放文件http://mbox.dj527.com/url.asp?id="+id 这个不是?
保存到服务器上改了JS 文件还是不显示!
------解决方案--------------------
1、猜测你是想采集播放。
2、必须通过你的服务器代理,才能解决跨域问题。
3、你要搞清来源网站的数据接口,必须从列表入口页面开始采集。
SUCH AS要采集总排行榜:
在服务器端异步请求“http://www.dj527.com/showlist”,THEN对返回的responseBody(非responseText)进行编码转换解决乱码问题(绝对乱码,这也是服务端代理的重要原因之一),再用正则提取曲目ID和曲目标题。如果A端采用JS,该正则可为 ——
“返回的字符串.str.replace(/<input[^>]+checkbox\D+(\d+)[\S\s]*?font[^>]+>([^<]+)/gi, function($1, $2, $3){Irr.push($2); Nrr.push($3)})”,页面曲目所有ID和标题分别保存到了数组Irr和Nrr中且一一对应。其他A端语言改写下就OK了,匹配模式是一样的,只是语法不同。
4、循环曲目标题数组Nrr,自定义样式生成你想要的播放列表,写出曲目条目,并从“0”开始把数组下标号作为自定义属性(名字如“index”)添加到每一个相应节点。
5、给播放列表委托绑定(delegate)一个“click”事件,点击发生时获取相应节点的属性“index”并把它作为下标索引ID数组Irr得到对应曲目的ID号,再驱动一个动态SCRIPT加载,路径属性SRC:“http://www.dj527.com//Include/GetUrl.php?id=你点击播放列表索引到的雀目ID&ac=lplay”。
6、动态脚本加载OK后,会定义几个变量,其中“u+ID”就是曲目对应的流媒体加载路径。例如:var u16504="mms://wma.dj527.com/dj527.com/dj527/xc/20120319/老歌劲唱万水千山总是情生飞音乐DJ_小辉打造.wma";加载OK后动态拼写嵌入式播放标签就开始播放了。值得注意的是,每首曲子都得由动态脚本加载完成事件驱动拼写播放标签,这样循环播放模式才能够兼容所有浏览器,否则就ONLY FOR IE了。
------解决方案--------------------
再具体点,以简单的ASP为例子。
你首先让客户端AJAX异步访问你放在服务器端的ASP:
VBScript code
<%
Response.buffer = true
Response.charset = "gb2312"
Response.write Maobj(geter("http://www.dj527.com/showlist"), "<input[^>]+checkbox[\S\s]*?font[^>]+>[^<]+", "^\D+(\d+).+>([^<]+)$")
function geter(url)
dim http
set http = Server.CreateObject("Microsoft.XMLHTTP")
http.open "GET", url, false
http.setRequestHeader "referer", "dj527.com"
http.send()
if http.Readystate <> 4 then
set http = nothing
Exit function
end if
geter = Bytes(http.responseBody, "gb2312")
set http = Nothing
if Err.number <> 0 then
Err.clear
end if
end function
function Bytes(str, base)
dim obj
set obj = Server.CreateObject("Adodb.Stream")
obj.type = 1
obj.mode = 3
obj.open
obj.write str
obj.position = 0
obj.type = 2
obj.charset = base
Bytes = obj.readText
obj.Close
set obj = nothing
end function
function Maobj(strs, x, y)
dim re, Match, Matches, str
set re = New RegExp
re.Pattern = x
re.IgnoreCase = False
re.global = True
set Matches = re.Execute(strs)
str = ""
for each Match in Matches
str = str & Reobj(Match.value, y, "$1=$2") & "┇"
next
Maobj = str
end function
%>