【发布时间】:2015-11-14 03:58:26
【问题描述】:
我用一些变量构建了一个字典。
我将其字符串化并将其作为 PUT 请求发送。
请求通过,但所有字段最终都填充了变量的名称(friendRequest、friendRequester、requestedFriend)而不是它们的值!
Parse.Cloud.define("createChatRoom", function(request, response) {
var friendRequest = request.params.friendRequestId.toString();
var friendRequester = request.params.friendRequester.toString();
var requestedFriend = request.params.requestedFriend.toString();
var chatPayload = {}
chatPayload["room"] = {friendRequest: true};
chatPayload["members"] = {friendRequest: {friendRequester: true, requestedFriend: true}}
(...)
Parse.Cloud.httpRequest({
url: 'https://myapp.firebaseIO.com/app' + '.json',
headers: {'Content-Type': 'application/json'},
method: 'PUT',
params: {'auth': token},
body: JSON.stringify(chatPayload)
}).then(function(httpResponse) {
response.success("Successfully created chat room!");
},function(httpResponse) {
response.error("failed to create chat room" + httpResponse.text)
})
})
我做错了什么?
【问题讨论】:
-
您是否尝试过在您的 params 属性中将 Content-Type 作为 'application/json' 传递?您正在使用的 http 请求客户端可能默认为其他内容。
-
首先,
chatPayload.room和chatPayload.members应该使用点语法。其次,您应该使用x.toString()而不是String( x )来显式转换为字符串。 -
@PitaJ gotcha,对这个问题有什么想法吗?
-
@CaptainAdams 有什么想法吗?
-
为什么不在这里尝试关注点分离,首先使用函数构造对象,并在创建对象后通过回调启动 Ajax 调用?
标签: javascript json parse-platform firebase stringify