js接受response的问题 我在服务器端response.write(json对象);
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js接受response的问题 我在服务器端response.write(json对象);相关的知识,希望对你有一定的参考价值。
那我在html页面要怎么通过js来接受到这个json求具体代码~我页面提交一个到服务器 然后服务器返回 然后页面解析然后显示(返回的是数组)
你用什么方式获取?用ajax还是其他的。你可以用隐藏域来接收也可以用ajax的回写值来接收服务器的返回值。
解析JSON可以用eval但是eval的效率比较低,会重新价值js引擎。
常用的还有另外一种
var list = new Function("return " + JSON字符串)();
这样也可以获取到JSON 对象。
你说的是返回的数组
for(var i = 0,len = list.length; i < len; i++)
操作。
如果你是静态页面那么应该是用ajax来获取的,在数据请求成功的回调函数里面就可以只有用上面的方法解析JSON了。追问
我现在要用netty来当服务器 大神你知道么?
追答我不是做java的。我是做.net的。
但是应该没有什么区别吧。
我以前做过一点java用的是struts2
不管是那种技术。
页面页面肯定是可以向server端发送数据请求的。
然后server端处理相应数据。
jquery的话。
$.ajax(
type:"post",//或者是get请求
data:"",//发送的数据如果没有数据也可以不写
url:"", /*请求的路径 如果是struts2那应该是对应的action什么的*/
success:function(val)
var list = new Function("return " + val)();
//val可能包括单引号或者双引号或者回车符合或者其他的一些特殊符号。必须用正则表达式替换掉。
for(var i = 0,len = list.length; i < len; i++)
);
这样就可以了。
有不明白的再问。
1、异步Ajax请求,在回调函数中可以获取到字符串形式的json串
2、同步请求,把服务端返回的值设置到一个隐藏域中
通过以上两种方法获取到的都是字符串形式的Json串,通过eval函数可以转成Json对象 参考技术B ajax
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
var xmlhttp;
if (window.XMLHttpRequest)
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
else
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
if (xmlhttp.readyState==4 && xmlhttp.status==200)
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
xmlhttp.open("GET","这是你请求的路径",true);
xmlhttp.send();
</script>
</head>
<body>
<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">请求数据</button>
<div id="myDiv"></div>
</body>
</html> 参考技术C 想办法把这段json写到一个input里 可以设置为hidden
然后 var json = eval(getElementById('inputId').value);
就OK了
要不就写ajax 到后台去取追问
大神有qq不- -求教
追答349903700
UnhandledPromiseRejectionWarning: TypeError: res.status is not a function (NEXT JS)
【中文标题】UnhandledPromiseRejectionWarning: TypeError: res.status is not a function (NEXT JS)【英文标题】: 【发布时间】:2021-03-14 20:01:16 【问题描述】:当我 console.log(response) 然后我在终端上得到结果,
但是当我使用 res.status(200).json(response);我在我的 nextjs 项目中遇到此错误&
找不到
在浏览器上
router.get("/api/backendData", async (req, res, next) =>
dbConnect();
try
Shop.find().then((response) =>
res.status(200).json(response);
response;
console.log("responseess", response);
);
catch (e)
console.log("Error From API Endpoint", e);
);
错误代码:
(node:62307) UnhandledPromiseRejectionWarning: TypeError: res.status 不是函数 ┃ 在 /home/mh/Documents/Shopiy/shopyy_mode/server/server.js:34:11 ┃ 在 processTicksAndRejections (internal/process/task_queues.js:93:5) ┃ (使用
node --trace-warnings ...
显示警告的位置 创建)┃(节点:62307)UnhandledPromiseRejectionWarning:未处理 承诺拒绝。此错误源于抛出内部 一个没有 catch 块的异步函数,或者通过拒绝一个承诺 .catch() 没有处理。终止节点进程 未处理的承诺拒绝,使用 CLI 标志--unhandled-rejections=strict
(见 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝 id:1)┃(节点:62307)[DEP0018] 弃用警告: 未处理的承诺拒绝已被弃用。未来,承诺 未处理的拒绝将终止 Node.js 进程 带有非零退出代码。
【问题讨论】:
好像 res 没有状态功能。你在用 expressjs 吗? @user2258152 不,我没有使用 expressjs kk 那么路由器对象是什么或者它来自哪里? 从“koa-router”导入路由器;常量路由器 = 新路由器(); 【参考方案1】:Koa 路由器不返回 (req, res) 而是返回一个上下文https://github.com/ZijianHe/koa-router#router-
router.get('/', (ctx, next) =>
ctx.res.statusCode = 200
ctx.body = 'your json data'
)
【讨论】:
以上是关于js接受response的问题 我在服务器端response.write(json对象);的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Node.js res.body 中获取 $http.post 请求数据
无法使用res.redirect()方法重定向express + NodeJS [重复]