js小白,搞不清楚XMLHttpRequest对象的异步过程。实在是不知道可以在哪里发问和向谁发问...请见谅.. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
zhiml0ve
V2EX    Javascript

js小白,搞不清楚XMLHttpRequest对象的异步过程。实在是不知道可以在哪里发问和向谁发问...请见谅..

  •  
  •   zhiml0ve 2012-10-09 23:38:16 +08:00 4216 次点击
    这是一个创建于 4768 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想在页面输入豆瓣的链接,然后显示书名,到底是哪个地方有问题?
    希望好心人解答一下,麻烦了。

    <html>
    <head>
    <title>Get Book Name..</title>

    <script type="text/Javascript">
    function getit(){
    var xmlReg = new XMLHttpRequest();
    var curl = document.getElementById("e_url").value;
    xmlReg.open("GET",curl,true);
    xmlReg.Onreadystatechange= handleRequest;
    xmlReg.send(null);
    }
    function handleRequest(){
    if (xmlReg.readyState==4 && xmlReg.status==200) {
    var bookname = document.title;
    var change = document.getElementByTagName("h1")[0];
    change = bookname;
    };
    }
    </script>
    </head>

    <body>
    <input type="text" id="e_url" value="" />
    <input type="button" id="get_it" value="Get It.." Onclick="getit();"/>
    </br>
    <h1></h1>
    </body>
    </html>
    11 条回复    1970-01-01 08:00:00 +08:00
    raptium
        1
    raptium  
       2012-10-09 23:41:04 +08:00
    没细看
    不过跨站的 XHR 默认是不允许的,如果豆瓣服务器没有特别支持的话
    raptium
        2
    raptium  
       2012-10-09 23:42:28 +08:00   1
    另外楼主如果用 Chrome 调试,Console 里应该会提到 Same Origin Policy 之类的东西,就是说的这个问题
    zhiml0ve
        3
    zhiml0ve  
    OP
       2012-10-09 23:50:07 +08:00
    @raptium 就是在chrome调试的,现在发现getElementsByTagName少了s,加上了;在change = bookname;语句前面加了alert(change);却完全没有反应。就是跨站不行吗?
    感谢回答..
    zythum
        4
    zythum  
       2012-10-09 23:52:22 +08:00
    xhr不能跨区,安全问题。如果要做的话可以做成chrome插件之类的可以。
    tux
        5
    tux  
       2012-10-10 01:59:43 +08:00   1
    chrome默认不能跨域
    用 iframe 吧~
    chone
        6
    chone  
       2012-10-10 03:25:20 +08:00
    除了跨域的问题,handleRequest的逻辑也不对,数据应该是从xmlReg.responseXML取得。
    document是当前页面的。
    还有没有.getElementByTagName这个方法,应该是.getElementsByTagName。

    关于dom的操作lz可以看一下这个 http://www.w3school.com.cn/xmldom/dom_nodes_info.asp
    nicolazj
        7
    nicolazj  
       2012-10-10 21:47:58 +08:00
    v2ex 发帖不能格式化代码吗~
    ant_sz
        8
    ant_sz  
       2012-10-10 22:10:24 +08:00
    @tux iframe也不行哦。现在在js里加载跨域的page,是不能通过访问iframe的document访问到iframe的内容了

    @zhiml0ve 可以考虑豆瓣开放的API,豆瓣甚至有一个封装好的JS库可以直接调用。另外,实现跨域的js通讯交流有种方法叫做 JSONP ,可以 Google 一下试试
    liuyl
        9
    liuyl  
       2012-10-10 22:23:17 +08:00
    douban图书有api,调用api吧
    foru17
        10
    foru17  
       2012-10-10 22:28:57 +08:00
    我学Jquery ,到Ajax Jsonp那块,犯晕了.
    chone
        11
    chone  
       2012-10-10 22:58:18 +08:00
    @ant_sz
    @tux
    用iframe设置document.domain的方法解决的是跨子域访问的问题,不过可以通过iframe 的hash值来弄,但显然这种方法不适合lz的需要。

    我的建议是要么用豆瓣的api(不太清楚是否有jsonp的接口),要么可以在当前域名下做一个代理页面。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3093 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 00:34 PVG 08:34 LAX 17:34 JFK 20:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86