html5 - 通过post抓取的页面数据 为啥不能展现在页面上
PHPz
PHPz 2017-04-17 15:01:39
0
2
704

这是node.js代码

var http = require("http"),
    fs = require("fs"),
    querystring = require("querystring"),
    url = require("url");

http.createServer(function(req,res){
    var postdata="";
    var query="what";
    var pathname = url.parse(req.url).pathname;

    req.setEncoding("utf8");
    if(pathname=="/"){
        var indexPage = fs.readFileSync("表单.html");
        res.writeHead(200,{"Content-Type":"text/html"});
        res.end(indexPage);
    }
    if(pathname=="/about"){
        req.on("data",function(chunk){
            postdata += chunk;
        });
        req.on("end",function() {
            console.log(postdata);
            query = querystring.parse(postdata);
            console.log(query);
        });
        res.writeHead(200, {"Content-Type":"text/plain"});
        console.log(query.Name);
        console.log(query.number);
        res.write(query.number+ "and "+query.number);
        res.end();
    }
    else{
        res.writeHead(404,{"Content-Type":"text/plain"});
        res.end("Can not find the source");
    }
}).listen(2000,"127.0.0.1");

console.log("The server is running at port 2000");

这是html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单填写</title>
</head>
<body>
<form action="/about" method="post">
  <p> Name: <input type="text" name="Name"></p>
    <p>SchoolNumber:<input type="text" name="number"></p>
    <p><input type="submit" value="提交"></p>
</form>
</body>
</html>

执行结果图:

求大神解决 小弟感激不尽

PHPz
PHPz

学习是最好的投资!

全部回覆(2)
阿神

原因分析:回呼函數執行順序的問題, 加點列印資訊看看

res.write()那一行回傳的是你最開始定義的query並沒有執行req.on()裡面的操作,而這時的query還是你定義的字串"what",它不是一個json對象,所以就沒有number屬性,所以是undefined。
解:你可以把res.write()寫在req.on()裡面,像這樣:

伊谢尔伦

怎麼沒見你判斷請求方法啊?
這是我之前寫的一個範例,你可以參考一下:

var http=require('http');
var url=require('url');
var fs=require('fs');
var querystring=require('querystring');
var mgd=require('./mongodb.js');

http.createServer(function(req,res){
    switch(req.method){
        case 'POST':
            update(req,res);
            break;
        case 'GET':
            get(req,res);
            break;
        default:break;
    }
}).listen(8080);

function update(req,res){
    var pathname=url.parse(req.url).pathname;
    var postData='';
    /*接收评论*/
    if(pathname=='/postComment'){
        req.addListener('data',function(data){
            postData+=data;
        });
        req.addListener('end',function(){
            var json=querystring.parse(postData);
            mgd(function(c){
                c.insert('comment',json,function(){
                    var json={}
                    json.code=1;
                    res.writeHead('Content-Type:application/json;charset=UTF-8');
                    res.write(JSON.stringify(json));
                    res.end();
                });
            });

        })
    }
}

function get(req,res){
    var pathname=url.parse(req.url).pathname;
    
    /*主页*/
    if(pathname==='/'){
        fs.readFile('test.html',function(err,file){
            res.end(file);
        })
    }

    /*获取评论列表*/
    if(pathname=='/comment'){
        mgd(function(c){
            c.find('comment',{},function(data){
                var json={};
                if(data.length!=0){
                    json.code=1;
                    json.data=data;
                }else{
                    json.code=0;
                    json.data=null;
                }
                json=JSON.stringify(json)
                res.writeHead('Content-Type:application/json;charset=UTF-8');
                res.write(json);
                res.end();
            })
            
        })
    }

}

mongodb.js的程式碼需要的話可以在我的github上看一波,其實就是一個簡單的評論demo

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!