搜索

首页  >  问答  >  正文

javascript - 前端如何通过ajax和node.js交互?

首先我的文件结构:
web
-public
--login.html(登陆页面属于静态页面)
-veiws
--index.jade
-routes
--index.js
-app.js
前端代码

$("#login").click(function(){
        var username=$('#un').val();
        var pw=$("#pw").val();
        var data = {"un":username,"pw":pw};
        $.ajax({
            type:"post",
            url:"/login",
            async:true,
               success: function(data,status){ 
                    if(status == 'success'){ 
                        location.href = '../views/index.jade';
                    }
                },
                error: function(data,status){ 
                    if(status == 'error'){ 
                        alert("密码或者用户名错误");
                    }
        });
    })

这个$.ajax里的url我到底应该写什么。
另外我的服务端代码是写在app.js里还是写在router文件夹下的index.js里。还是新建一个js文件并把服务端代码写进去,然后url写这个js文件的相对目录(php貌似就是这样)。
还有就是index.js里的router.get('/', function(req, res, next){} )和
app.js里的var router = require('./routes/index');app.use('/',router)有什么区别,到底哪个才是绑定域名。我的理解是服务器启动后自动运行app.js然后app.use相当于把函数压入一个stack依次执行,然后执行到index.js时,index.js根据url地址渲染views里的jade模板,并且每刷新一次重新渲染一次(不清楚是没刷新一次app.js重新执行一次还是index.js重新执行一次)。

滿天的星座滿天的星座2750 天前658

全部回复(3)我来回复

  • 仅有的幸福

    仅有的幸福2017-05-24 11:40:22

    你可以试试在 segmentFault 的 控制台那里输入下面的代码

    $.ajax({
        url: '/',
        success: res => console.log(res), 
        error: err => console.log(err)
    }); 


    然后你会拿到 / 这个 html 的文件内容。


    你的问题

    假设你监听了 3000 端口,而且你定义了 /login 这个路由

    那么 URL 应该填 /login


    这个 app.use 后面的内容叫做中间件

    比如我访问 http://localhost:3000/api/login

    恰好我有个中间件刚刚好可以匹配到 /api/login 那么 express 会把 req res 交给这个中间件做处理

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-24 11:40:22

    URL 可以是相对的也可以是绝对的,绝对的从 http(s):// 开始,可以指定任何域名上的URL,不过要注意跨域访问的问题。相对的则是相对于当前页面的 URL,

    url 解释
    /<path> / 开始的相对路径,相对于根,即当前页面所在的 Domain(主机域名)
    ../<path> 从当前页面所在的上层路径开始,可以多个 ../ 连用表示上面若干层
    ./ 当前页面相同的路径开始,与不要 ./ 是同样的效果

    这里需要注意的是当前页面路径的认定,因为URL中 folder/ 有可简写成 folder,而有没有 folder/ 有可简写成 folder,而有没有 / 所代表的位置完全不同(在当今路由广泛使用的情况下,已经不是通过扩展名来区分目录或页面了),所以一般建议前端至少写相对于根的路径。

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-24 11:40:22

    你写'/'是代表当前端口,url是你在nodejs中的路径

    回复
    0
  • 取消回复