最近在学习Node的知识,就尝试写了一个注册登陆的简单功能,但是自己在模拟后台返回值的时候,总是报错Unexpected token ' in JSON at position 1,查找原因之后,是因为我的返回data是这样定义的,res.write("{'ok':false,'msg':'用户名或者密码错误!'}"),所以会报错,正确写法是res.write('{"ok":false,"msg":"用户名或者密码错误!"}'),里面必须用双引号括住,。

代码如下:

服务器端代码:

var http = require('http');
var fs = require('fs');
var urlLib = require('url');
var querystring = require('querystring');
var users = {};
var server = http.createServer((req,res) => {
var str = '';
req.on('data',(data) => {
str += data
});
req.on('end',() => {
var obj = urlLib.parse(req.url,true);
var url = obj.pathname;
var GET = obj.query;
var POST = querystring.parse(str);
if(url == '/user') {
switch (GET.act) {
case 'login':
if(users[GET.user] == null) {
res.write('{"ok":false,"msg":"该用户不存在!"}')
}else if(GET.pass != users[GET.user]) {
res.write('{"ok":false,"msg":"用户名或者密码错误!"}')
}else {
res.write('{"ok":true,"msg":"登录成功!"}')
}
break;
case 'reg':
if(users[GET.user]) {
res.write('{"ok":false,"msg":"该用户已存在!"}')
}else {
users[GET.user] = GET.pass
res.write('{"ok":true,"msg":"注册成功!"}')
}
break;
default:
res.write('{"ok":false,"msg":"未知的act!"}')
};
res.end()
}else {
var file_url = './' + url;
fs.readFile(file_url,(err,data) => {
if(err) {
res.write('404')
}else {
res.write(data)
};
res.end()
})
}
})
}).listen(8080,() => {
console.log('启动了!')
})

客户端代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<script>
$(document).ready(function() {
var oUser = $('#user');
var oPass = $('#pass');
var oRegBtn = $('#regBtn');
var oLoginBtn = $('#LoginBtn');
//登陆
oLoginBtn.on('click',() => {
$.ajax({
url: '/user',
data: {act:'login',user:oUser.val(),pass:oPass.val()},
type: 'get',
success: function(data) {
var ok = JSON.parse(data).ok;
if(ok) {
alert('登录成功!')
}else {
alert('登录失败 '+ JSON.parse(data).msg)
}
},
error: function() {
alert('通信失败!')
}
})
})
//注册
oRegBtn.on('click',() => {
$.ajax({
url: '/user',
data: {act:'reg',user:oUser.val(),pass:oPass.val()},
type: 'get',
success: function(data) {
var ok = JSON.parse(data).ok;
if(ok) {
alert('注册成功!')
}else {
alert('注册失败 '+ JSON.parse(data).msg)
}
},
error: function() {
alert('通信失败!')
}
})
})
})
</script>
<body>
用户名:<input type="text" id="user" value=""><br />
密码:<input type="password" id="pass" value=""><br />
<input type="button" id="regBtn" value="注册">
<input type="button" id="LoginBtn" value="登录">
</body>
</html>

注:在这里对于提交一些没有做一些严格的验证,只是做一个简单的逻辑处理,大家可以根据自己的情况去完善,一起交流!

node模拟后台返回json书写格式报错--Unexpected token ' in JSON at position 1的更多相关文章

  1. 记录微信小程序报错 Unexpected end of JSON input;at pages/flow/checkout page getOrderData function

    微信小程序报错 Unexpected end of JSON input;at pages/flow/checkout page getOrderData function 这个报错是在将数组对象通过 ...

  2. 报错Unexpected token u

    报错Unexpected token u,出错位置提示在index.html的第一行. 出现这个错误的原因是尝试JOSN.parse一个undefined的对象导致的,解决办法就是如果为undefin ...

  3. webpack打包报错Unexpected token

    最近项目要上线,需要对项目进行打包部署到服务器上面,在打包过程中npm run build后出现以下报错Unexpected token: punc (() [./~/_element-ui@1.4. ...

  4. electron-vue 引入OpenLayer 报错 Unexpected token export

    electron-vue 引入OpenLayer 报错 Unexpected token export 解决办法: 在 .electron-vue/webpack.renderer.config.js ...

  5. Vue打包报错Unexpected token: punc(()解决方案

    (用vscode)vue项目打包时,报错,报错信息如下: ERROR in static/js/0.564c764efc3ecf31190c.js from UglifyJs Unexpected t ...

  6. 前端node.js npm i 报错Unexpected end of JSON input while parsing near

    清缓存 npm cache clean --force 重新安装 npm install

  7. npm install 报错Unexpected end of JSON input while parsing near...

    安装node http://nodejs.cn/download/ 克隆代码 ....... 执行安装 npm install 然后就报了一坨错误 清理一下缓存 sudo npm cache veri ...

  8. js解析json报错Unexpected token i in JSON at position 1

    因为后台json是手动拼接的,在拼接时偷了懒,不想转义,所以就用了单引号,结果js解析时悲催了 这里记录一下,被解析的json字符串必须键值对都用双引号包起来,必须是双引号 默默罚抄一百遍

  9. react创建项目报错unexpected end of json while parsing near xxx

    报这个错,执行下面的命令,然后重新创建项目就可以. npm cache clean --force

随机推荐

  1. Flask01 初识flask、创建flask应用、flask启动配置

    1 什么是flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 百度百科:点击前往 中文文档: ...

  2. linux中历史命令的一点发现

    在LINUX中的终端中输入命令之后,这些命令会被存储到一个文件中,在终端中按下 键盘上的向上的箭头就会显示出以前敲击过的命令,最关键的是重起电脑之后依然有效的,这点和 windows上的CMD有着很大 ...

  3. R语言系列:数据的基本运算

    基本运算符号  1.基本数学计算  +.-.*./.^.%%(求模).%/%(整除)  注意:求模运算两边若为小数,则整数和小数部分分别求模.例:5.6%%2.2  2.比较运算  >.< ...

  4. vivado中使用debug不能连接到vcse_server

    打开 Xilinx Design Tools -> ISE Design Suite 14.7 -> Accessories -> ISE Design Suite 64 Bit C ...

  5. 解决Torch.load()错误信息: UnicodeDecodeError: 'ascii' codec can't decode byte 0x8d in position 0: ordinal not in range(128)

    使用PyTorch跑pretrained预训练模型的时候,发现在加载数据的时候会报错,具体错误信息如下: File "main.py", line 238, in main_wor ...

  6. 网页设计与开发:HTML、CSS、JavaScript实例教程 (郑娅峰) pdf扫描版

    网页设计与开发:HTML.CSS.JavaScript实例教程从实用角度出发,详细讲解了HTML.CSS和JavaScript的基本语法和设计技巧,通过一个实用的班级网站的规划.设计.实现到发布过程, ...

  7. laravel 常见操作

    1.url()

  8. 洛谷P1378 油滴扩展

    P1378 油滴扩展 题目描述 在一个长方形框子里,最多有N(0≤N≤6)个相异的点,在其中任何一个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完 ...

  9. IOS UIWebView与js的简单交互swift3版

    在开发过程中,我们可能遇到ios代码与js交互的情况,本人第一次使用遇到了很多坑,这里纪录一下,方便自己,也方便需要的人. 1.第一步先建一个接口(协议)并继承JSExport 这里实现两个方法提供给 ...

  10. Exadata 上关于SAS盘的小秘密

    案例概述 一个X3-2 的Exadata临时客户,ORACLE原厂工程师在进行onecommand初始化的过程中,执行到第6步,calibrate检测存储节点磁盘性能时报错,后续工作无法继续.而由于一 ...