javascript - 前端如何通過ajax和node.js交互?
問題描述
首先我的文件結(jié)構(gòu):web-public--login.html(登陸頁面屬于靜態(tài)頁面)-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('密碼或者用戶名錯(cuò)誤'); }}); })
這個(gè)$.ajax里的url我到底應(yīng)該寫什么。另外我的服務(wù)端代碼是寫在app.js里還是寫在router文件夾下的index.js里。還是新建一個(gè)js文件并把服務(wù)端代碼寫進(jìn)去,然后url寫這個(gè)js文件的相對(duì)目錄(php貌似就是這樣)。還有就是index.js里的router.get(’/’, function(req, res, next){} )和app.js里的var router = require(’./routes/index’);app.use(’/’,router)有什么區(qū)別,到底哪個(gè)才是綁定域名。我的理解是服務(wù)器啟動(dòng)后自動(dòng)運(yùn)行app.js然后app.use相當(dāng)于把函數(shù)壓入一個(gè)stack依次執(zhí)行,然后執(zhí)行到index.js時(shí),index.js根據(jù)url地址渲染views里的jade模板,并且每刷新一次重新渲染一次(不清楚是沒刷新一次app.js重新執(zhí)行一次還是index.js重新執(zhí)行一次)。
問題解答
回答1:你可以試試在 segmentFault 的 控制臺(tái)那里輸入下面的代碼
$.ajax({ url: ’/’, success: res => console.log(res), error: err => console.log(err)});
然后你會(huì)拿到 / 這個(gè) html 的文件內(nèi)容。
假設(shè)你監(jiān)聽了 3000 端口,而且你定義了 /login 這個(gè)路由
那么 URL 應(yīng)該填 /login
這個(gè) app.use 后面的內(nèi)容叫做中間件
比如我訪問 http://localhost:3000/api/login
恰好我有個(gè)中間件剛剛好可以匹配到 /api/login 那么 express 會(huì)把 req res 交給這個(gè)中間件做處理
回答2:URL 可以是相對(duì)的也可以是絕對(duì)的,絕對(duì)的從 http(s):// 開始,可以指定任何域名上的URL,不過要注意跨域訪問的問題。相對(duì)的則是相對(duì)于當(dāng)前頁面的 URL,
url解釋/<path>以 / 開始的相對(duì)路徑,相對(duì)于根,即當(dāng)前頁面所在的 Domain(主機(jī)域名)../<path>從當(dāng)前頁面所在的上層路徑開始,可以多個(gè) ../ 連用表示上面若干層./當(dāng)前頁面相同的路徑開始,與不要 ./ 是同樣的效果這里需要注意的是當(dāng)前頁面路徑的認(rèn)定,因?yàn)閁RL中 folder/ 有可簡(jiǎn)寫成 folder,而有沒有 / 所代表的位置完全不同(在當(dāng)今路由廣泛使用的情況下,已經(jīng)不是通過擴(kuò)展名來區(qū)分目錄或頁面了),所以一般建議前端至少寫相對(duì)于根的路徑。
回答3:你寫’/’是代表當(dāng)前端口,url是你在nodejs中的路徑
相關(guān)文章:
1. 老師您的微信號(hào)是多少?2. node.js - nodejs開發(fā)中常用的連接mysql的庫3. mysql replace 死鎖4. mysql - 字符串根據(jù)字典替換5. 網(wǎng)頁爬蟲 - python 爬取網(wǎng)站 并解析非json內(nèi)容6. 視頻文件不能播放,怎么辦?7. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場(chǎng)景下 ,會(huì)帶來哪些效率或者其他方面的好處8. 請(qǐng)教使用PDO連接MSSQL數(shù)據(jù)庫插入是亂碼問題?9. 雙擊安裝程序,安裝不了10. mysql - 把一個(gè)表中的數(shù)據(jù)count更新到另一個(gè)表里?
