gpt4 book ai didi

jquery - 为什么我在 MongoDB REST API 中收到带有字符串的错误请求?

转载 作者:可可西里 更新时间:2023-11-01 10:43:07 25 4
gpt4 key购买 nike

我正在从事一个与任务计划有关的项目,此时我似乎遇到的唯一问题是当我使用 MongoLab 的 REST API 进行调用时。

如果文本中有 %,它会作为错误请求返回,如果我将文档中的名称更改为没有 %,然后在变量中没有 % 的情况下再次运行它它工作没问题,但问题是 resultName 是动态的,对于许多用户来说会有很多结果,而某人的结果可能是“将体重减少 10%”。

我为此使用的代码如下:

resultName = "Reduce everything by 10%";
urlTest = 'https://api.mongolab.com/api/1/databases/myDB/collections/users/?apiKey=myAPIKey&q={"result_name":"' + resultName + '"}';

$.ajax(
{ url: urlTest,
type: "GET",
contentType: "application/json",
async: false
}
).success(function(returnedData) {
console.log(returnedData);
});

我怎样才能允许使用其他符号的 % 符号,并且仍然在没有错误请求的情况下提取正确的数据?

最佳答案

您可能需要考虑先使用 native JavaScript 转义 % 字符 encodeURI()函数,然后使用 decodeURI() 在您的 API RESTful GET 实现中对其进行解码 功能。

一些测试来证明这一点:

var resultName = "Reduce everything by 10%";
resultName = encodeURI(resultName);
decodedResultName = decodeURI(resultName);
urlTest = 'https://api.mongolab.com/api/1/databases/myDB/collections/users/?apiKey=myAPIKey&q={"result_name":"' + resultName + '"}';


console.log(resultName);
console.log(decodedResultName);
console.log(urlTest);

输出日志:

Reduce%20everything%20by%2010%25
Reduce everything by 10%
https://api.mongolab.com/api/1/databases/myDB/collections/users/?apiKey=myAPIKey&q={"result_name":"Reduce%20everything%20by%2010%25"}

因此,您可以使用 decodeURI() 在后端解码查询对象字符串。 功能:

db.test.insert([
{ "result_name": "Decrease Bodyweight by 10%" },
{ "result_name": "Reduce everything by 10%" }
])

var q = {"result_name":"Reduce%20everything%20by%2010%25"};
q.result_name = decodeURI(q.result_name);
db.test.find(q);

给出:

/* 0 */
{
"_id" : ObjectId("5549f951180e849972939049"),
"result_name" : "Reduce everything by 10%"
}

关于jquery - 为什么我在 MongoDB REST API 中收到带有字符串的错误请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30065269/

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