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++)




);
这样就可以了。
有不明白的再问。

参考技术A 楼上已经说的很清楚了,方法有两种:
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 响应标头

aiohttp web.response 正文为 json

无法在 Node.js res.body 中获取 $http.post 请求数据

无法使用res.redirect()方法重定向express + NodeJS [重复]

角度 5 nginx mongoose docker ERR_EMPTY_RESPONSE

bootstrap-table response handler 怎么用