- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
从用户代理进行 ajax POST
$.ajax({
type: 'POST',
url: 'https://mysub.domain.dev/myroute',
headers: {
'X-Requested-With': 'XMLHttpRequest'
},
contentType: 'application/octet-stream; charset=utf-8',
success: function(result) {
successAction();
},
processData: false,
data: myResult['myValue']
});
在我的服务器上使用 Koa2,如何从 POST 正文中获取数据 myResult['myValue']?
const bodyParser = require('koa-body');
const router = new Router();
const body = bodyParser();
router.post('/myroute/', body, async (ctx, next) => {
const getMyValue = ctx.request.body.data.myValue;
}
我尝试过各种组合。全部都是未定义或空对象。
const getMyValue = ctx.request.body
对象{}
const getMyValue = ctx.request.body.data;
未定义
const getMyValue = ctx.request.body.myResult['myValue'];
未定义
最佳答案
这里发生了一些事情。
首先,您需要明确告诉 koa-body 查找多部分表单数据(默认情况下关闭)。所以:
const koaBody = require('koa-body')
router.post('/myroute', koaBody({ multipart: true }),
async (ctx, next) => {
// ctx.request.body.fields: additional (non-file) fields
// ctx.request.body.files: files (octet-stream)
})
其次,在客户端中,您可能需要设置 enctype
并将 contentType
显式设置为 false
。这似乎违反直觉,但它阻止 jQuery 添加会丢失边界字符串的 ContentType
header 。您的请求将如下所示:
$('#go').click(evt => {
evt.preventDefault()
const data = new FormData($('#uploadForm')[0])
data.append('extra', 'fields if required')
$.ajax({
contentType: false,
data,
enctype: 'multipart/form-data',
processData: false,
success: result => $('#result').text(result),
type: 'POST',
url: '...'
})
})
请注意,示例中的 FormData
可能不适合您的用例,这只是一个方便的演示。假设这是一个文件,您可能只需使用 data: myresult['myValue']
即可。
关于node.js - 使用 koa-body 和 koa-router 访问 Node 中的 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47943221/
我正在使用 koa.js 开发节点服务器 我已经为 body 解析器寻找了一些库。 并且有好几种koa body parser。 但我不知道它们有什么区别,包括 koa-body和 koa-bodyp
我正在尝试使用 Koa.js,并检查了以下用于路由请求的模块:1.koa路线2. koa 挂载 当我在谷歌中查看他们的 github 页面/教程时,这些示例看起来几乎相似,只有细微差别。 对于 koa
假设我想在不使用扩展程序的情况下将一个简单的变量发布到 Koa 应用程序,我该怎么做? 最佳答案 您必须使用官方 koa-bodyparser 模块。 然后所有 POST参数将在 this.reque
抱歉,我不太明白 key 在 koa 中是如何工作的。在 koa 中,有keys字段上 app将像这样使用的对象: const app = new Koa(); app.keys = ['some s
我们为什么要做这个 router.get('/data', async (ctx, next) => { ctx.body = dummyjson.parse(data); await nex
这就是我的想法,伪代码。 const myRedirect = (routePath) => { newUrl = routePath; if (matches condition)
应用程序.js var bodyParser = require('koa-bodyparser'); app.use(bodyParser()); app.use(route.get('/objec
如何使用 koa-router 进行嵌套路由重定向? app.js: var router = require('koa-router')(); var route1 = require('./rou
我尝试使用该模块为 Koa 服务器建立 HTTPS 连接 https://www.npmjs.com/package/koa-sslify但我收到错误“AssertionError:app.use()
我有一个非常简单的服务器可以使用: import * as http from 'http'; import * as Koa from "koa"; import { Request, Respon
从用户代理进行 ajax POST $.ajax({ type: 'POST', url: 'https://mysub.domain.dev/myro
我试图从我们的 React 客户端上传一个大约 1.5 mb 的 JSON 对象到我们的 Koa.js node.js 服务器。 我将 Koa.js 与 koaBody(koa-body 4.1.1)
我正在潜入Koa2并看到koa-compose。我得到了我给它的中间件,并且它返回了一个,但是为什么呢?将多个中间件包装为一个而不是单独添加它们有什么好处? app.use(compose(m1, m
我正在尝试 Koa.js,并且正在寻找一种关于生成器返回错误处理的最佳实践(如果有的话)。采取以下措施: var sql = require('./lib/sql'); app.use(functio
通常,登录用户会获得内容类型的所有条目。 我创建了一个“代码段”内容类型(_id,name,content,users>snippets)>表示“具有并属于许多”关系。 我创建了一些测试用户并提出了一
在我的app.js中,我有以下内容... app.use(async (ctx, next) => { try { await next() } catch (err) { c
我在导出路线时遇到了一个奇怪的问题。由于某种原因,这段代码对我有用: app.js import Koa from 'koa' import routes from './routes/index'
我想将一些环境变量从 Koa 服务器传递到客户端。在 Express 中,我可以执行类似 res.render('index', { data: 'someData' }); 的操作,然后我可以访问
这是代码片段: //Category.service.js ... exports.update = async (ctx, next) => { const {categoryId} = ctx
我是 node 和 koa 的新手,所以请原谅我的愚蠢。 我不确定我是否搞砸了。但我想将 Koa 与 OrientDB 一起使用。我可以使用 Oriento(Node 的模块)连接到 OrientDB
我是一名优秀的程序员,十分优秀!