gpt4 book ai didi

javascript - 如何通过 Ajax 调用将非 url 请求参数传递给 Smalltalk Teapot

转载 作者:行者123 更新时间:2023-12-04 09:26:56 24 4
gpt4 key购买 nike

我正在尝试使用 Teapot 在 Smalltalk 中创建 API ,一切正常,直到我需要更新具有很长内容字段的对象。这是我的代码示例:

Teapot on
POST: '/posts/<key>/update' -> [ :req | (posts at: (req at: #key)) updateContent: (req at: #content)];
start.
如果我以这种方式请求端点,它可以工作:
ZnClient new
url: 'http://localhost:8080/posts/1/update';
formAt: 'content' put: 'Imagine this is a large content';
post.
它从 URL 中获取第一个参数,从表单数据中获取第二个参数。但前端实际上是一个 Web 应用程序,它通过 Javascript 执行请求。
第一个简单的尝试是使用基于 url 的参数调用端点,它工作正常,但是当 URL 太大时我收到错误:
'http://localhost:8080/posts/'+id+'/update?content='+encodeUri('Here goes a very large content')
所以我像往常一样使用表单,但服务器找不到“内容”参数:
 var formData = new FormData();
formData.append("content", "A large content goes here");

$.ajax({
"url":'http://localhost:8080/posts/'+id+'/update',
"type": 'post',
"processData": false,
"contentType": false,
"data": formData,
"success": function (data) {
resolve(data);
},
"error": function (request, status) {
reject(request.responseText);
}
});
我进行了调试,但“req”对象中不存在该参数。此时未找到该参数:
TeaRequest > formParam: aSymbol ifAbsent: aBlock
^ (znRequest entity isKindOf: ZnApplicationFormUrlEncodedEntity) "XXX do something better"
ifTrue: [ znRequest entity at: aSymbol ifAbsent: aBlock ]
ifFalse: aBlock
PS:我使用的标题是:
   resp headers at: 'Access-Control-Allow-Origin' put: '*'.
resp headers at: 'Access-Control-Expose-Headers' put: 'X-Total-Count'.
任何的想法?

最佳答案

通过表单发送的参数可以通过 req 对象访问。这不是很清楚,但我是这样做的:

(req entity contents at:1) fieldName; fieldValueString.

关于javascript - 如何通过 Ajax 调用将非 url 请求参数传递给 Smalltalk Teapot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62971100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com