最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js+Ajax實現(xiàn)獲取HTTP服務(wù)器返回數(shù)據(jù)

 更新時間:2014年11月26日 12:07:29   投稿:hebedich  
這篇文章主要介紹了node.js+Ajax實現(xiàn)獲取HTTP服務(wù)器返回數(shù)據(jù),講解的十分詳細(xì),也給出了很多的實例,是篇非常不錯的文章,這里推薦給大家。

我們看一個HTML5頁面中通過AJAX請求的方式獲取HTTP服務(wù)器返回數(shù)據(jù)的代碼示例.由于我們把服務(wù)器的端口指定為1337,并將從端口為80的網(wǎng)站中運(yùn)行HTML5頁面,因此這是一種跨域操作,需要在HTTP響應(yīng)頭部中添加Access_Control_Allow_Origin字段,并且將參數(shù)指定為允許向服務(wù)器請求數(shù)據(jù)額域名+端口號(省略端口號時允許該域名下的任何端口向服務(wù)器請求數(shù)據(jù)),

靜態(tài)頁面:index.html(注:一定要放在服務(wù)器環(huán)境下,如果是win7系統(tǒng)的話,可以開啟IIS服務(wù),并把頁面考過去直接運(yùn)行這個頁面,)

復(fù)制代碼 代碼如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>node中的ajax請求(html5頁面)</title>
    <script type="text/javascript">
        function GetData(){
            var xhr=new XMLHttpRequest();
            xhr.open("GET","http://localhost:1337/",true);
            xhr.onreadystatechange=function(){
                if(xhr.readyState==4){
                    if(xhr.status==200){
                        document.getElementById("res").innerHTML=xhr.responseText;
                    }
                }
            }
            xhr.send(null);
        }
    </script>
</head>
<body>
<input type="button" value="獲取數(shù)據(jù)" onclick="GetData()" />
<div id="res">dsdf</div>
</body>
</html>

node代碼:

復(fù)制代碼 代碼如下:

var http=require("http");
var server=http.createServer(function(req,res){
    if(req.url!=="/favicon.ico"){
        res.writeHead(200,{"Content-Type":"text/plain","Access-Control-Allow-Origin":"http://localhost"});
        res.write("你好啊!");
    }
    res.end();
});
server.listen(1337,"localhost",function(){
    console.log("開始監(jiān)聽...");
});

首先開啟服務(wù):node server.js

啟動靜態(tài)頁面:

點(diǎn)擊按鈕"獲取數(shù)據(jù)"

如果大家覺得需要配置服務(wù)器環(huán)境太麻煩,可以借用編輯器的優(yōu)勢來做.

比如我用的是webstrom 8.0;

當(dāng)我啟動頁面的時候,瀏覽器中顯示的是這個路徑:

端口是63342.這個時候我們隊代碼做一些修改:

node的 server.js代碼:

復(fù)制代碼 代碼如下:

var http=require("http");
var server=http.createServer(function(req,res){
    if(req.url!=="/favicon.ico"){
        res.writeHead(200,{"Content-Type":"text/plain","Access-Control-Allow-Origin":"http://localhost:63342"});
        //res.setHeader();
        res.write("你好啊!");
    }
    res.end();
});
server.listen(1337,"localhost",function(){
    console.log("開始監(jiān)聽...");
});

修改了"Access-Control-Allow-Origin"的值.

重新運(yùn)行demo會發(fā)現(xiàn),達(dá)到同樣的效果

也可以通過res.seetHeader來單獨(dú)設(shè)置響應(yīng)頭部.

可以將上面的res.writeHead()改成res.setHeader();

復(fù)制代碼 代碼如下:

var http=require("http");
var server=http.createServer(function(req,res){
    if(req.url!=="/favicon.ico"){
        //res.writeHead(200,{"Content-Type":"text/plain","Access-Control-Allow-Origin":"http://localhost:63342"});
        res.setHeader("Content-Type","text/plain");
        res.setHeader("Access-Control-Allow-Origin","http://localhost:63342");
        res.write("你好啊!");
    }
    res.end();
});
server.listen(1337,"localhost",function(){
    console.log("開始監(jiān)聽...");
});

細(xì)心的同學(xué)可能發(fā)現(xiàn)了,利用setHeader的方法時,缺少了一個狀態(tài)碼,比如200.那么我們在使用res.setHeader的時候,如何來設(shè)置狀態(tài)碼呢?等會上代碼

ajax在服務(wù)器端返回的時候日期:

我們可以在服務(wù)器端返回時,刪除這個字段.

設(shè)置res.sendData=false;

復(fù)制代碼 代碼如下:

var http=require("http");
var server=http.createServer(function(req,res){
    if(req.url!=="/favicon.ico"){
        //res.writeHead(200,{"Content-Type":"text/plain","Access-Control-Allow-Origin":"http://localhost:63342"});
        res.statusCode=200;
        res.sendDate=false;
        res.setHeader("Content-Type","text/plain");
        res.setHeader("Access-Control-Allow-Origin","http://localhost:63342");
        res.write("你好啊!");
    }
    res.end();
});
server.listen(1337,"localhost",function(){
    console.log("開始監(jiān)聽...");
});

設(shè)置了狀態(tài)碼,也屏蔽了日期信息.

res.getHeader(name)獲取我們設(shè)置的響應(yīng)頭信息

res.removeHeader(name);刪除我們的頭信息.必須在我們的write方法發(fā)送數(shù)據(jù)之情被調(diào)用.

res.headersSent屬性是一個布爾值,當(dāng)當(dāng)響應(yīng)頭已發(fā)送時,屬性值為true時;當(dāng)響應(yīng)頭未發(fā)送時,屬性值為false.

server.js代碼:

復(fù)制代碼 代碼如下:

var http=require("http");
var server=http.createServer(function(req,res){
    if(req.url!=="/favicon.ico"){
        if(res.headersSent)
            console.log("響應(yīng)頭已發(fā)送");
        else
            console.log("響應(yīng)頭未發(fā)送");
        res.writeHead(200,{"Content-Type":"text/plain","Access-Control-Allow-Origin":"http://localhost:63342"});
        if(res.headersSent)
            console.log("響應(yīng)頭已發(fā)送");
        else
            console.log("響應(yīng)頭未發(fā)送");       
        res.write("你好啊!");
    }
    res.end();
});
server.listen(1337,"localhost",function(){
    console.log("開始監(jiān)聽...");
});

運(yùn)行demo查看結(jié)果:

res.write()方法是向客戶端發(fā)送數(shù)據(jù)的,其實他還有一個返回值.

當(dāng)向客戶端發(fā)送的數(shù)據(jù)量比較小時或網(wǎng)速較快時,node總是將數(shù)據(jù)直接發(fā)送到操作系統(tǒng)的內(nèi)核緩存區(qū)中,然后從內(nèi)核緩存區(qū)中取出數(shù)據(jù)發(fā)送給對方.這個時候write會返回true.

當(dāng)網(wǎng)速慢或數(shù)據(jù)量較大時,http服務(wù)器并不一定會立刻把數(shù)據(jù)發(fā)送給客戶端,node會把數(shù)據(jù)緩存在內(nèi)存中,并在對方可以接受數(shù)據(jù)的情況下將內(nèi)存中的數(shù)據(jù)通過操作系統(tǒng)的內(nèi)核發(fā)送給對方.這時的write返回false.

可以設(shè)置test.txt的內(nèi)容多少來測試結(jié)果.

一個簡單的node+ajax效果就實現(xiàn)了.是不是很簡單呢?當(dāng)然,想制作更加復(fù)雜的功能的話,我們還需要進(jìn)一步的學(xué)習(xí),以后我們慢慢來更新。

相關(guān)文章

  • node.js中的events.emitter.removeListener方法使用說明

    node.js中的events.emitter.removeListener方法使用說明

    這篇文章主要介紹了node.js中的events.emitter.removeListener方法使用說明,本文介紹了events.emitter.removeListener的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node.js實現(xiàn)博客小爬蟲的實例代碼

    node.js實現(xiàn)博客小爬蟲的實例代碼

    這篇文章通過實例代碼來給大家介紹如何利用node.js實現(xiàn)博客小爬蟲,有需要的朋友們可以直接運(yùn)用文中給出的實例代碼來進(jìn)行實踐學(xué)習(xí),感興趣的朋友們下面來一起看看吧。
    2016-10-10
  • NodeJs入門教程之定時器和隊列

    NodeJs入門教程之定時器和隊列

    這篇文章主要給大家介紹了關(guān)于NodeJs入門教程之定時器和隊列的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 使用node操作SQLite的方法

    使用node操作SQLite的方法

    SQLite是一種輕量級的嵌入式關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它以庫的形式存在,可以嵌入到應(yīng)用程序中,使用Node.js操作SQLite數(shù)據(jù)庫有多種方式,其中常用的方式包括使用sqlite3模塊、sequelize模塊和knex模塊,本文將詳細(xì)的給大家介紹這幾種方式,需要的朋友可以參考下
    2023-10-10
  • npm?install的--save和--save-dev使用說明(推薦)

    npm?install的--save和--save-dev使用說明(推薦)

    這篇文章主要介紹了npm?install的--save和--save-dev使用說明,文中給大家提到了各個命令的區(qū)別及各種安裝參數(shù)的區(qū)別,需要的朋友可以參考下
    2022-08-08
  • Windows下Node.js安裝及環(huán)境配置方法

    Windows下Node.js安裝及環(huán)境配置方法

    這篇文章主要為大家介紹一下Node.js安裝及環(huán)境配置方法,這也是腳本之家小編發(fā)現(xiàn)的比較詳細(xì)的教程了,從安裝到配置都很詳細(xì),想學(xué)習(xí)Node.js的朋友可以參考一下
    2017-09-09
  • Node之簡單的前后端交互(實例講解)

    Node之簡單的前后端交互(實例講解)

    下面小編就為大家?guī)硪黄狽ode之簡單的前后端交互(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Node.js的中間件及使用方法詳解

    Node.js的中間件及使用方法詳解

    在Node.js的生態(tài)中,中間件(Middleware)是一個不可或缺的概念,它為構(gòu)建靈活而高效的應(yīng)用程序提供了強(qiáng)大的支持,下面給大家介紹Node.js的中間件及使用方法,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 詳解node登錄接口之密碼錯誤限制次數(shù)(含代碼)

    詳解node登錄接口之密碼錯誤限制次數(shù)(含代碼)

    這篇文章主要介紹了nodejs登錄接口之密碼錯誤限制次數(shù)(含代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • mongodb初始化并使用node.js實現(xiàn)mongodb操作封裝方法

    mongodb初始化并使用node.js實現(xiàn)mongodb操作封裝方法

    這篇文章主要介紹了mongodb初始化并使用node.js實現(xiàn)mongodb操作封裝方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

逊克县| 巴林左旗| 乳源| 老河口市| 繁峙县| 曲阜市| 安吉县| 仁怀市| 南丹县| 盐边县| 类乌齐县| 肇州县| 颍上县| 日土县| 罗甸县| 宣威市| 南和县| 张家川| 比如县| 信阳市| 南华县| 寿宁县| 武宣县| 永丰县| 宜春市| 宝山区| 盐边县| 那曲县| 四川省| 涞水县| 巴林右旗| 晋江市| 莱西市| 攀枝花市| 台安县| 新河县| 三台县| 康保县| 茂名市| 大厂| 永嘉县|