小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

求教xmlhttp 跨域訪問rss "沒有權(quán)限"解決 - AJAX問必答 - 無憂AJAX...

 kenwang 2007-06-30
var xmlhttp;
function readRSS() {
    createXMLHttpRequest();     
    xmlHttp.onreadystatechange = handleStateChange;
    xmlHttp.open("GET", "http://esoft./rss2.xml", true);
    xmlHttp.send(null);
}

function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }
}
function handleStateChange() {
    if(xmlHttp.readyState == 4) {
        if(xmlHttp.status == 200) {
            window.status=‘?dāng)?shù)據(jù)加載成功!‘;
            ResultSet();
        }else{
           alert("HTTP接收信息出錯:狀態(tài)"+request.status+"具體內(nèi)容"+request.statusText);
  }
}else{
      forWait();       //進(jìn)度條顯示控制----等待
      window.status=‘?dāng)?shù)據(jù)加載中,請稍候...‘;
}
}

function forWait(){
      waitDiv.innerHTML="<img src=\"images/loading.gif\">";
}

function ResultSet() {
    var results = xmlHttp.responseXML;
    var title = null;
    var item = null;
    var link=null;
    //得到channel
     var ccc=results.getElementsByTagName("channel");
     var headtitle=ccc[0].getElementsByTagName("title")[0].firstChild.nodeValue;
     var headlink=ccc[0].getElementsByTagName("link")[0].firstChild.nodeValue;
     var cell = document.createElement("div");
     cell.innerHTML="<h1><a href="+headlink+" target=_blank>"+headtitle+"</a></h1><br>";
     //輸出控制----標(biāo)題
     resultRss.innerHTML="";
     resultRss.appendChild(cell);
     //得到items
     var items = results.getElementsByTagName("item");
     //計算需要顯示的Rss個數(shù)     
     if(rssCount>=items.length){
     rssCount = items.length;
     }
     for(var i = 0; i < rssCount; i++) {
        item = items;
        link=item.getElementsByTagName("link")[0].firstChild.nodeValue;
        title = item.getElementsByTagName("title")[0].firstChild.nodeValue;
        var cell = document.createElement("div");
        cell.innerHTML=(i+1)+".<a href="+link+" target=_blank>"+title+"</a><br>";
        //輸出控制----詳細(xì)內(nèi)容
        resultRss.appendChild(cell);
     }
}


[ 本帖最后由 guwei0530 于 2007-4-22 21:29 編輯 ]

頂部
[廣告]
hopesoft (琥珀)
校長
Rank: 9Rank: 9Rank: 9


UID 1
精華 2
積分 188
帖子 223
閱讀權(quán)限 200
注冊 2006-2-17
來自 Beijing
狀態(tài) 離線
發(fā)表于 2007-4-23 13:04  資料  個人空間  主頁 短消息  加為好友  添加 hopesoft 為MSN好友 通過MSN和 hopesoft 交談
如果要通過AJAX訪問本站之外的數(shù)據(jù),可做一個代理頁把遠(yuǎn)程數(shù)據(jù)抓取到本地,再用ajax讀取。

可參考首頁源碼 http://www./bbs/viewthread.php?tid=519





歡迎光臨無憂AJAX!分享 交流 進(jìn)步!
頂部
guwei0530
小學(xué)生
Rank: 1



UID 3119
精華 0
積分 0
帖子 4
閱讀權(quán)限 10
注冊 2007-4-20
狀態(tài) 離線
發(fā)表于 2007-4-23 13:30  資料  個人空間  短消息  加為好友 
不好意思,校長,忘了說我需要在JAVA環(huán)境下處理。
PHP我不懂。可否在指點(diǎn)一下?

頂部
guwei0530
小學(xué)生
Rank: 1



UID 3119
精華 0
積分 0
帖子 4
閱讀權(quán)限 10
注冊 2007-4-20
狀態(tài) 離線
發(fā)表于 2007-4-23 15:00  資料  個人空間  短消息  加為好友 
經(jīng)過多番努力,問題終于得到解決。感謝校長的提示。
在此說明解決方法: 同樣類似使用代理的意念,在java內(nèi)寫一個servlet來處理這個問題。
詳細(xì)處理方式是:1.首先,同樣使用xmlhttp方式處理;
                        2.然后,在進(jìn)行open提交的時候,不直接提交到對應(yīng)數(shù)據(jù)源所在的URL地址。而是提交到代理程序,而通過代理程序打開需要讀取的數(shù)據(jù)源URL,同時處理讀取并返回。
                       3.最后,重新用xmlhttp進(jìn)行解析顯示處理即可以實(shí)現(xiàn)跨域讀取RSS源。
修改上面的js代碼:
     var PROXY_SERVLET_URL="../../proxyServlet?url=";//對應(yīng)配置的servlet參數(shù)
     if(url.toLowerCase().indexOf("[url=http://]http://")==-1[/url]){
        readRSS(url);
     }else{
      url = PROXY_SERVLET_URL + url;
        readRSS(url);
     }

java源代碼如下:
package action;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ProxyServletUtil extends HttpServlet {
/**
  *
  */
private static final long serialVersionUID = 1L;

private int READ_BUFFER_SIZE = 1024;

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    String urlString = request.getParameter("url");
    writeResponse(response, urlString);
    }

private void writeResponse(HttpServletResponse response, String urlString) throws ServletException{
   try {
    URL url = new URL(urlString);
    URLConnection urlConnection = url.openConnection();
    response.setContentType(urlConnection.getContentType());
    InputStream ins = urlConnection.getInputStream();
    OutputStream outs = response.getOutputStream();
    byte[] buffer = new byte[READ_BUFFER_SIZE];
    int bytesRead = 0;
    while ((bytesRead = ins.read(buffer, 0, READ_BUFFER_SIZE)) != -1) {
     outs.write(buffer, 0, bytesRead);
    }
    System.out.println(outs);
    outs.flush();
    outs.close();
    ins.close();
   } catch (Exception e) {
    try {
     response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
    } catch (IOException ioe) {
     throw new ServletException(ioe);
    }
   }
   }
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多