搜尋

首頁  >  問答  >  主體

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 天前656

全部回覆(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
  • 取消回覆