1.求node.js 结合ajax 的完整实例 2.页面的参数怎样从前端传递到node.js后端进行处理(除了用表单提交,然后后端用req.body.xx提取之外) 例如若demo是个连接的话,连接demo页面会跳转,但怎样将demo这个值传回后端,进行相关处理了?
var req = new XMLHTTPRequest(); req.onload = function () { console.log(req.status); // 响应码 console.log(req.responseText); // 响应字符 }; req.open('POST', true); req.setRequestHeader('请求头名', '请求头值'); req.send('HTTP请求体字符');
JSON.parse(STRING) => OBJECT JSON.stringify(OBJECT) => STRING
@tulayang sorry,搞不明白~
@kingche
那就真没法明白了,看看《javascript高级编程》吧
@tulayang 谢谢!请问基于express框架的node.js可以和前端的ajax实现双向通信吗?
客户端和服务器通信,本身是tcp-http。nodejs只不过是实现tcp-http,然后提供接口编程罢了。
这个接口就是
前端ajax的接口就是:XMLHTTPRequest的实例ajax
楼主是想用封装好的ajax吧… 我写个一个帖子是jq的ajax,可以看看 http://my.oschina.net/l3ve/blog/281084
前端用的是jquery,请求代码如下:
$.ajax({ type: 'GET', dataType: 'html', url: '/views/main.html', data: { type: "getself",username:getCookie("username")}, success: function (data) { $("#user_msg").append(data); },error:function(XMLHttpRequest, textStatus, errorThrown){ console.log(XMLHttpRequest.status); console.log(XMLHttpRequest.readyState); console.log(textStatus); } });
这里的url 写的是/views/main.html.这里的/views 指向的是我项目根目录下的views 文件夹(后台要配置一下) 然后后端相应请求的代码
app.post('/views/main.html',function(req,req){ //执行逻辑; });
也可以这样写,把回调函数封装起来
app.post('/views/main.html',user.list);
user.list 是我user.js 下的list 方法
之前有提到 后台配置一下的问题 我的配置如下
app.engine('.html', ejs.__express); app.set('view engine','html'); app.set('views',__dirname+"/views"); app.set('view option',{layout:false});
@taufik 非常好,前后端逻辑完整.
你的问题完全是因为你还没了解nodejs。错应该说还没了解后端语言的机制。用不用表单不是”后端“决定,而且前端使用什么方式,AJAX就是解决form的问题。 但你的问题说是demo判断连接其实和form应该没太多关系,如:<a href="/user?username=2b"/>用户姓名</a>这个连接是连接到一个"/user"的路由连接。带了一个username参数 后端获取: app.get(’/user’,function(req,res){ var username = req.query.username <–后段取得username的值"2b" if(username==‘2b’){ res.send(‘恭喜通过2b测试’) //下一步执行的 }else{ res.redirect(’/’) //返回刚才的页面 【"/"路由是首页】 } })
@xiaxiaokang 自己通过写实例,对这套机制已经了解。 点击demo连接跳转,只要在node用app.ge获取demo的href内容即可,然后由于是app.get操作;获得参数可用req.params.xx; 例如demo的链接href="/demo/username" 那么app.get(’/demo/:username’,function(req,res){ var username = req.params.username; … }); 是这样的吧!
@kingche 没错,,当日你也可以选择参数方式看你自己喜欢, 参数:username这种用不好就会和路由混乱 如 路由demo/xxxx 都属于demo/:username的范围 我比较习惯用参数。。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
@tulayang sorry,搞不明白~
@kingche
那就真没法明白了,看看《javascript高级编程》吧
@tulayang 谢谢!请问基于express框架的node.js可以和前端的ajax实现双向通信吗?
@kingche
客户端和服务器通信,本身是tcp-http。nodejs只不过是实现tcp-http,然后提供接口编程罢了。
这个接口就是
前端ajax的接口就是:XMLHTTPRequest的实例ajax
楼主是想用封装好的ajax吧… 我写个一个帖子是jq的ajax,可以看看 http://my.oschina.net/l3ve/blog/281084
前端用的是jquery,请求代码如下:
这里的url 写的是/views/main.html.这里的/views 指向的是我项目根目录下的views 文件夹(后台要配置一下) 然后后端相应请求的代码
也可以这样写,把回调函数封装起来
user.list 是我user.js 下的list 方法
之前有提到 后台配置一下的问题 我的配置如下
@taufik 非常好,前后端逻辑完整.
你的问题完全是因为你还没了解nodejs。错应该说还没了解后端语言的机制。用不用表单不是”后端“决定,而且前端使用什么方式,AJAX就是解决form的问题。 但你的问题说是demo判断连接其实和form应该没太多关系,如:<a href="/user?username=2b"/>用户姓名</a>这个连接是连接到一个"/user"的路由连接。带了一个username参数 后端获取: app.get(’/user’,function(req,res){ var username = req.query.username <–后段取得username的值"2b" if(username==‘2b’){ res.send(‘恭喜通过2b测试’) //下一步执行的 }else{ res.redirect(’/’) //返回刚才的页面 【"/"路由是首页】 } })
@xiaxiaokang 自己通过写实例,对这套机制已经了解。 点击demo连接跳转,只要在node用app.ge获取demo的href内容即可,然后由于是app.get操作;获得参数可用req.params.xx; 例如demo的链接href="/demo/username" 那么app.get(’/demo/:username’,function(req,res){ var username = req.params.username; … }); 是这样的吧!
@kingche 没错,,当日你也可以选择参数方式看你自己喜欢, 参数:username这种用不好就会和路由混乱 如 路由demo/xxxx 都属于demo/:username的范围 我比较习惯用参数。。