怎样实现xmlhttp.open跨域访问?

chate 2009-11-10 12:16:56
做了一个多功能的气象工具条,在本机测试没有问题,一上传就出现错误了——JS文件中的“xmlhttp.open("GET", xmldoc,false);”拒绝访问(http://m.weather.com.cn/)。
搜索了一下,可以用动态页get.asp获取远程地址的代码,或者动态的构建一个form 然后提交。但我基础很差,不知道具体怎么做。

我的JS代码:
function PostOrder(xmldoc)
{
createXMLHTTPRequext();

xmlhttp.open("GET", xmldoc,false); //这句出错了,拒绝访问!
xmlhttp.onreadystatechange= HandleStateChange;
xmlhttp.send(null);
}

请问我该怎样实现跨域访问?请给出具体详细的实例(包括get.asp等的全部代码,我很菜)。我要访问的域名是http://m.weather.com.cn
谢谢!
...全文
1162 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yixinpai 2010-11-29
  • 打赏
  • 举报
回复
我最近,也找了很久;如果是jsp开发,好办,用servlet,转一下;
但是C#下,没有什么好的办法
如果是用<script>,直接就显示了,我要自己能排版的;
如果是用proxy,可是大部分代码都写好了,只要xmlhttp.open能跨域就行了。
chate 2009-11-13
  • 打赏
  • 举报
回复
自己顶
chate 2009-11-10
  • 打赏
  • 举报
回复
补充:这里也仿照您的代码修改了:
xmlhttpObj.open("GET",readXML.asp,false);
xmlhttpObj.onreadystatechange= HandleStateChange;
xmlhttpObj.send(null);
chate 2009-11-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lifeng_beijing 的回复:]
给你个例子
……
[/Quote]
我不懂代码,照葫芦画瓢,没有成功!
我的readXML.asp(把原来页面的utf-8改为gb2312后,原有页面本机测试也通不过,所以这里也改为utf-8)
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%response.charset="utf-8"%>
<%
filePath="http://m.weather.com.cn/m/pn11/weather.htm"
response.write getXML(filePath)
function getXML(url)
dim sttp
set sttp=server.createobject("MSXML2.XMLHTTP")
sttp.open "GET",url,false, "", ""
sttp.send()
if sttp.readystate<>4 then
exit function
end if
getXML=sttp.responseBody
set sttp=nothing
end function
%>

原来的JS页面修改后出现了缺少对象的错误:
function PostOrder() //去掉了xmldoc
{
var xmlHttpObj=createXMLHTTP();//这句出错了,字符: 6 错误: 缺少对象
xmlHttpObj.onreadystatechange=function(){
if (xmlHttpObj.readyState==4)
{
if (xmlHttpObj.status==200)
{
alert(xmlHttpObj.responseText);xmlHttpObj=null;
} } }



createXMLHTTPRequext();

xmlhttpObj.open("GET",readXML.asp,false);
xmlhttpObj.onreadystatechange= HandleStateChange;
xmlhttpObj.send(null);
}
hitlcyu19 2009-11-10
  • 打赏
  • 举报
回复
不能跨域访问吧
  • 打赏
  • 举报
回复
给你个例子
javascript + asp 实现javascript跨域读取xml文件

a.html
<script >
function getPeiLvData() {
var xmlHttpObj=createXMLHTTP();
xmlHttpObj.onreadystatechange=function(){
if (xmlHttpObj.readyState==4)
{
if (xmlHttpObj.status==200)
{
alert(xmlHttpObj.responseText);xmlHttpObj=null;
} } }
xmlHttpObj.open("post","readXML.asp",true);
xmlHttpObj.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xmlHttpObj.send(true); }
getPeiLvData();
</script>


readXML.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%response.charset="gb2312"%>
<%
filePath="http://www.xx.com/xml/xx.xml"
response.write getXML(filePath)
function getXML(url)
dim sttp
set sttp=server.createobject("MSXML2.XMLHTTP")
sttp.open "GET",url,false, "", ""
sttp.send()
if sttp.readystate<>4 then
exit function
end if
getXML=sttp.responseBody
set sttp=nothing
end function
%>
dh20156 2009-11-10
  • 打赏
  • 举报
回复
在不能修改对方代码的情况下,只能使用服务端代理了。
cloudgamer 2009-11-10
  • 打赏
  • 举报
回复
js不能跨域
在后台做吧
chen_xiangguo 2009-11-10
  • 打赏
  • 举报
回复
js不支持跨域访问
你使用服务器语言访问网址,然后返回客户端
jsp 版本的我实现过
看我的回帖
cnchart 2009-11-10
  • 打赏
  • 举报
回复
用服务端作为代理,客户端访问服务端
  • 打赏
  • 举报
回复
你用服务端访问就是了,别用客户端,这么写您能看懂不??...
bendows 2009-11-10
  • 打赏
  • 举报
回复
修改IE配置:工具-〉internet选项->安全-〉自定义级别,启用关于跨域的选项。

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧