CNode

关于post的发送,和post处理的小白问题。

Gggaaooppeenngg发布于13 年前最后回复13 年前20 回复6878 浏览0 收藏

1.我不知道我代码哪里写错了,只要不注释掉res.writeHead()就会有错。 2.弱弱地问一句,我怎么把一个对象的某个属性返回去呀? 比如我写一个res.wirite(data.a)就说要转成字符串,但是用querystring.stringify却没有结果,然后试了一下JS里的toString(),却说没定义。 //服务器 var http = require('http'); var url = require('url'); var util = require('util'); var qs = require('querystring'); http.createServer(function(req,res){ var data = ''; req.on('data',function(chunk){ data+=chunk; });

 req.on('end',function(){
	 data = qs.parse(data);
 });
   res.writeHead(200, {
    'Content-Length': data.length,
    'Content-Type': 'text/plain' });
 res.write('hello');
 //res.write(data.a);
 res.end("hello");

}).listen(3000); console.log("!!!");

//模拟一个POST请求 var http=require('http'); var qs=require('querystring');

var post_data={a:123,time:new Date().getTime()}; var content=qs.stringify(post_data);

var options = { host: 'localhost', port: 3000, path: '/', method: 'POST', headers:{ 'Content-Type':'application/x-www-form-urlencoded', 'Content-Length':content.length } }; console.log("post options:\n",options); console.log("content:",content); console.log("\n");

var req = http.request(options, function(res) { console.log("statusCode: ", res.statusCode); console.log("headers: ", res.headers); var _data=''; res.on('data', function(chunk){ _data += chunk; }); res.on('end', function(){ console.log("\n--->>\nresult:",_data) }); });

req.write(content); req.end();

查看回复

回复 (20)

Y
ydzhony1#1·13 年前

你好,我也刚学,测试了下你的代码。 应该是用 var https=require('https');就可以了。 代码就运行正常了。

6
6yang#2·13 年前

var https=require('https');运行

G
ggaaooppeenngg#4·13 年前
引用 6yangvar https=require('https');运行

谢谢,为什么呀?

G
ggaaooppeenngg#5·13 年前
引用 6yangvar https=require('https');运行

@ggaaooppeenngg 都要改么?

Y
youxiachai#6·13 年前

npm install request

https://github.com/mikeal/request

...

S
shiedman#7·13 年前

问题所在:

req.on('end',function(){
    data = qs.parse(data);
});
  res.writeHead(200, {
     'Content-Length': data.length,

提示: 异步

G
ggaaooppeenngg#8·13 年前
引用 shiedman问题所在: 提示: 异步

果然! 原来data还没接受完我就写头了。 原来我还是没有真正理解什么叫异步呀。

J
jiyinyiyong#9·13 年前

用 Markdown 语法标记一下代码 :)

var http = require('http')
G
ggaaooppeenngg#10·13 年前
引用 shiedman问题所在: 提示: 异步

var http=require('http'); var qs=require('querystring'); var post_data={a:123,time:new Date().getTime()};//这是需要提交的数据 var content=qs.stringify(post_data);

var options = { host: 'localhost', port: 3000, path: '/', method: 'POST', headers:{ 'Content-Type':'application/x-www-form-urlencoded', 'Content-Length':content.length } }; console.log("post options:\n",options); console.log("content:",content); console.log("\n");

var req = http.request(options, function(res) { console.log("statusCode: ", res.statusCode); console.log("headers: ", res.headers); var _data=''; res.on('data', function(chunk){ _data += chunk; console.log(_data); }); res.on('end', function(){ //data = qs.parse(_data); console.log('end is emitted'); console.log("\n--->>\nresult:",_data) }); });

req.write(content); req.end();

//服务器 var http = require('http'); var url = require('url'); var util = require('util'); var qs = require('querystring'); http.createServer(function(req,res){ var data = ''; req.on('data',function(chunk){ data+=chunk; });

req.on('end',function(){ res.writeHead(200, { 'Content-Length': data.length, 'Content-Type': 'text/plain' }); data = qs.parse(data); console.log(data.a.toString()); res.write(data.a.toString()); res.end('hello'); //data = qs.parse(data); console.log(data); }); }).listen(3000); console.log("!!!");

在客户端 我的res.on(end)事件始终没有反应……这是为什么?

G
ggaaooppeenngg#11·13 年前
引用 jiyinyiyong用 Markdown 语法标记一下代码 :)

怎样标记呀? 我在前面加了很多空格也不行…………

J
jiyinyiyong#14·13 年前
引用 jiyinyiyong用 Markdown 语法标记一下代码 :)

@ggaaooppeenngg 论坛置顶帖有说明的呀.. 代码前一行后一行分别用三个反引号 ` 标记

H
hankwang#16·13 年前
引用 jiyinyiyong用 Markdown 语法标记一下代码 :)

@jiyinyiyong 我覺得回覆功能應該加個預覽XD

J
jiyinyiyong#17·13 年前
引用 jiyinyiyong用 Markdown 语法标记一下代码 :)

@hankwang 本来一直有的, 管理员加编辑器的时候去掉了, 结果一个坑到现在还没填上

G
ggaaooppeenngg#18·13 年前

''' 这是代码 '''

G
ggaaooppeenngg#19·13 年前
  这是代码
G
ggaaooppeenngg#20·13 年前

就像这样么? 好好玩呀~

参与回复
登录后即可参与回复。登录