目錄:javascript
一 express框架接收php
二 接收Gethtml
三 發送Getjava
四 接收Postnode
五 發送Postexpress
一 express框架接收數組
1
2
3
4
5
|
app.
get
(
'/'
,function(req,res) {
var
url = req.query.url;
var
name = req.query.name;
console.log(url, name);
});
|
二 接收Get瀏覽器
1. get參數在req.url上app
2. 使用url.parse將數據由字符串轉變爲obj框架
index.js:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
var
http = require(
'http'
);
var
url = require(
'url'
);
var
util = require(
'util'
);
//req 請求信息 res返回信息
http.createServer(function(req, res){
res.writeHeader(200, {
'Content-Type'
:
'text/javascript;charset=UTF-8'
});
//狀態碼+響應頭屬性
// 解析 url 參數
var
params
= url.parse(req.url,
true
).query;
//parse將字符串轉成對象,req.url="/?url=123&name=321",true表示params是{url:"123",name:"321"},false表示params是url=123&name=321
res.write(
"網站名:"
+
params
.name);
res.write(
"\n"
);
res.write(
"網站 URL:"
+
params
.url);
res.end();
}).listen(3000);
|
瀏覽器打開:
1
|
http:
//127.0.0.1:3000/?url=123&name=321
|
網頁顯示:
1
2
|
網站名:321
網站 URL:123
|
三 發送Get
index.js:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
var
http = require(
'http'
);
var
qs = require(
'querystring'
);
var
data = {
a: 123,
time:
new
Date().getTime()};
//這是須要提交的數據
var
content = qs.stringify(data);
var
options = {
hostname:
'127.0.0.1'
,
port: 10086,
path:
'/pay/pay_callback?'
+ content,
method:
'GET'
};
var
req = http.request(options, function (res) {
console.log(
'STATUS: '
+ res.statusCode);
console.log(
'HEADERS: '
+ JSON.stringify(res.headers));
res.setEncoding(
'utf8'
);
res.
on
(
'data'
, function (chunk) {
console.log(
'BODY: '
+ chunk);
});
});
req.
on
(
'error'
, function (e) {
console.log(
'problem with request: '
+ e.message);
});
req.end();
|
四 接收Post
當請求這個頁面時,若是post數據中沒有name和url,則返回一個提交頁面;若是有name和url,則打印。
1. post請求會觸發"data"事件。
2. chuck使用+=保存,由於會額外請求favicon.ico,致使body={}。
3. 請求結束,會觸發"end"事件。將chuck反序列化querystring.parse(body)爲對象數組, 使用body.name訪問post變量。
index.js:
1
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
var
http = require(
'http'
);
var
querystring = require(
'querystring'
);
var
postHTML =
'<html><head><meta charset="utf-8"><title>菜鳥教程 Node.js 實例</title></head>'
+
'<body>'
+
'<form method="post">'
+
'網站名: <input name="name"><br>'
+
'網站 URL: <input name="url"><br>'
+
'<input type="submit">'
+
'</form>'
+
'</body></html>'
;
http.createServer(function (req, res) {
//暫存請求體信息
var
body =
""
;
//請求連接
console.log(req.url);
//每當接收到請求體數據,累加到post中
req.
on
(
'data'
, function (chunk) {
body += chunk;
//必定要使用+=,若是body=chunk,由於請求favicon.ico,body會等於{}
console.log(
"chunk:"
,chunk);
});
//在end事件觸發後,經過querystring.parse將post解析爲真正的POST請求格式,而後向客戶端返回。
req.
on
(
'end'
, function () {
// 解析參數
body = querystring.parse(body);
//將一個字符串反序列化爲一個對象
console.log(
"body:"
,body);
// 設置響應頭部信息及編碼\<br><br> res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
|
1
2
3
4
5
6
7
8
9
10
|
if
(body.name && body.url) {
// 輸出提交的數據
res.write(
"網站名:"
+ body.name);
res.write(
"<br>"
);
res.write(
"網站 URL:"
+ body.url);
}
else
{
// 輸出表單
res.write(postHTML);
}
res.end();
});
}).listen(3000);
|
瀏覽器中打開:http://127.0.0.1:3000/
第一次訪問127.0.0.1,post中沒有name和url,顯示提交頁面。
點擊提交後,網頁會打印出以下結果。
問題:
1. req.on("end"事件會屢次觸發。由於會請求favicon.ico。
2. res.writeHead(200, {'Content-Type': 'text/html; charset=utf8'});
text/html的意思是將文件的content-type設置爲text/html的形式,瀏覽器在獲取到這種文件時會自動調用html的解析器對文件進行相應的處理。
text/plain的意思是將文件設置爲純文本的形式,瀏覽器在獲取到這種文件時並不會對其進行處理。
五 發送Post
index.js:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
var
http = require(
'http'
);
var
querystring = require(
'querystring'
);
var
contents = querystring.stringify({
name:
'byvoid'
,
email:
'byvoid@byvoid.com'
,
address:
'Zijing'
});
var
options = {
host:
'www.byvoid.com'
,
path:
'/application/node/post.php'
,
method:
'POST'
,
headers:{
'Content-Type'
:
'application/x-www-form-urlencoded'
,
'Content-Length'
:contents.length
}
}
var
req = http.request(options, function(res){
res.setEncoding(
'utf8'
);
res.
on
(
'data'
,function(data){
console.log(
"data:"
,data);
//一段html代碼
});
});
req.write(contents);
req.end;
|