有同學知道怎么回事嗎?鏈接錯了嗎 一直改了很多遍 還是顯示這樣,咋辦?
普通頁面沒有報錯 訪問localhost:8080/login.html就報錯
//app.js文件
const?http?=?require('http')?//引進http就是創建服務器
const?url?=?require('url')
const?querysring?=?require('querystring')
const?fs?=?require('fs')
let?user?=?{
????//用json代替/假裝數據庫,存的用戶的(登錄)數據
????admin:?123456
}
http.createServer((req,?res)?=>?{
????//獲取數據
????let?path,?get,?post
????if?(req.method?==?'GET')?{
????????let?{?pathname,?query?}?=?url.parse(req.url,?true)
????????path?=?pathname,
????????????get?=?query?//吧數據放到外面去,get數據
????????complete()
????}?else?if?(req.method?==?'POST')?{
????????let?arr?=?[]
????????req.on('data',?buffer?=>?{
????????????arr.push(buffer)?//暫時拿到了buffer
????????})
????????req.on('end',?()?=>?{
????????????post?=?querystring.parse(Buffer.concat(arr).toString())
????????????????//concat()方法吧數組平起來,二進制轉為toString變成人能看的東西,如果是文件不能用toString
????????????????//querystring也是一個parse,處理成我們喜歡的string
????????})
????????complete()
????}
????function?complete()?{
????????//響應頭,狀態碼200成功,寫在這里不太好,到時候ajax去寫是不會亂碼的,寫在最外層是因為登錄和注冊msg都有中文寫一次可以共同去用
????????//?res.writeHead(200,?{
????????//?????????"Content-Type":?"text/plain;charset=utf-8"
????????//?????})?//將亂碼轉換為編碼(msg亂碼了)
????????if?(path?==?'/login')?{
????????????if?(!user[username])?{
????????????????res.writeHead(200,?{
????????????????????"Content-Type":?"text/plain;charset=utf-8"
????????????????})
????????????????//登錄
????????????????let?{?username,?password?}?=?get
????????????????//拿到的get數據,判斷數據庫有沒有,username,password是確定的名字?
????????????????//判斷如果是用戶的密碼登錄成功
????????????????res.end(JSON.stringify({
????????????????????????err:?1,
????????????????????????msg:?"用戶名不存在",
????????????????????}),?//end?只能用字符串和buffer,用JSON.stringify轉換為字符串???//end是一個回調
????????????????)
????????????}?else?if?(user[username]?!=?password)?{
????????????????res.end(JSON.stringify({
????????????????????err:?1,
????????????????????msg:?"密碼錯誤"
????????????????}))
????????????}?else?{
????????????????res.end(JSON.stringify({
????????????????????????err:?0,
????????????????????????msg:?"登錄成功"
????????????????????}))?//成功?err為0
????????????}
????????}?else?if?(path?==?'/reg')?{
????????????res.writeHead(200,?{
????????????????"Content-Type":?"text/plain;charset=utf-8"
????????????})
????????????//注冊
????????????let?{?username,?password?}?=?post
????????????if?(user[username])?{
????????????????//先從錯誤的判斷,已經注冊的話告訴用戶不好意思
????????????????res.end(JSON.stringify({
????????????????????err:?1,
????????????????????msg:?"賬號已經存在"
????????????????}))
????????????}?else?{
????????????????res.end(JSON.stringify({
????????????????????err:?0,
????????????????????msg:?"注冊成功"
????????????????}))
????????????}
????????}?else?{
????????????//fs讀取的
????????????fs.readFile(`www${path}`,?(err,?data)?=>?{
????????????????if?(err)?{
????????????????????res.end('404')
????????????????}?else?{
????????????????????res.end(data)?//這個data就是buffer直接end就可以
????????????????}
????????????})
????????}
????}
}).listen(8080)
//let?path,get,post?路徑?get數據?post數據
//?get有個url的路徑?
//let{pathname,query}=url.parse(req.url,true)?parse(是解析一下,好像是數組解析)true(是split)
//post?比較復雜?是異步
//在if塊最后,在else?if塊最后,不可能做兩個事情,創建一個完成的函數,在if,else?if塊最后執行
//get請求寫完?測試(沒有用到之前的form.html文件)?命令行輸入這個node?app??在瀏覽器輸入localhost:8080/login?username=zhangsan&password=123456?
//顯示{"err":1,"msg":"鐢ㄦ埛鍚嶄笉瀛樺湪"},這個字符串沒報錯,是亂碼,因為msg:中文,(到時候ajax去寫是不會亂碼的)
//將亂碼轉換為編碼,重新執行,顯示{"err":1,"msg":"用戶名不存在"}
//post寫完沒辦法跟get請求一樣測試,要用ajax,在node文件夾下建一個www的文件夾,www文件夾里面有login.html,這個靜態文件訪問不了(localhost:8080/login.html,因為現在還沒有寫過),
//用fs模塊讀取這個文件,訪問(localhost:8080/login.html),顯示字符串,被編碼影響了,吧編碼重新放在登錄,注冊if塊和else?if塊最前面?(命令行和網址輸入,顯示登錄框)
//login.html?登錄頁面引入jquery.min.js,開始寫ajax(在html頁面寫)
//login.html文件
<!DOCTYPE?html>
<html?lang="en">
<head>
????<meta?charset="UTF-8">
????<meta?name="viewport"?content="width=device-width,?initial-scale=1.0">
????<meta?http-equiv="X-UA-Compatible"?content="ie=edge">
????<title>Document</title>
????<script?src="jquery.min.js"></script>
</head>
<body>
????用戶名:<input?type="text"?id="username"><br/>?密碼:
????<input?type="password"?id='password'><br/>
????<button?id="login">登錄</button><br/>
????<button?id="reg">注冊</button><br/>
????<script>
????????$('#login').click(function()?{
????????????$.ajax({
????????????????url:?"/login",
????????????????data:?{
????????????????????username:?$('#username').val(),
????????????????????password:?$('#passwor').val()
????????????????},
????????????????dataType:?"json",
????????????????success(res)?{
????????????????????//執行成功返回的是json值
????????????????????if?(res.err)?{
????????????????????????alert(res.mag)
????????????????????}?else?{
????????????????????????alert("登錄成功")
????????????????????}
????????????????}
????????????})
????????})
????</script>
</body>
</html>
2020-01-09
同學,先回答你第一個錯誤:
//登錄的問題:? let?{?username,?password?}?=?get
這段代碼你寫在了if判斷的下面,當執行if的時候,還沒獲取到username,當然就報錯了。 你把這段代碼放到if前面即可解決。
第二個問題:
關于你的jquery找不到的問題,是因為你路徑寫的有問題.
login.html和jquery.min.js是同一個目錄,
所以你引入jquery的時候,src應該是./jquery.min.js, 不用加前面的/www/,
./是指當前目錄的意思
希望能解決你的問題。:)
2020-02-01
代碼太多不想看
2020-01-08
我想補充,當我改完路徑又有問題,課程是沒有www.+jquery的路徑的然后文件也是復制到www文件夾? 然后我這里顯示這樣


