我们有一个使用trigger.io构建的ios应用程序。此应用程序使用forge.request.ajax将数据发送到我们的服务器。我们的一个请求偶尔会抛出一个错误并返回:
{"message":"Invalid parameter not satisfying: url","type":"UNEXPECTED_FAILURE"}
由于输入参数是以json格式发送的,我怀疑用户输入的某些字符可能会破坏结构并导致此错误。我的代码看起来像这样:
forge.request.ajax({
url: "someurl.php",
dataType: "json",
data:"some=data&and=some&more=data&which=is inputted by user",
success: function (data) {
},
error: function (error) {
forge.request.ajax({
url: "errorlog.php",
dataType: "json",
data:"data=" + encodeURIComponent(JSON.stringify(error)),
success: function (data) {
},
error: function (error) {
}
});
}
});
此代码给出了上述错误的一半时间。并在另一半工作。 ajax请求中的输入参数是否有任何限制?因为我无法编辑objective-c代码,所以我需要一个解决方案 - 最好是一个过滤器 - 它可以确保这个函数适用于输入的任何输入。
答案 0 :(得分:1)
使用encodeURIComponent
可能有所帮助:
var data = "some=data&and=some&more=data&which=is inputted by user";
forge.request.ajax({
url: "someurl.php",
dataType: "json",
data: encodeURIComponent(data)
...
将请求数据作为URL参数传递但是它的份额超过了它的份额,所以它也值得一看这个StackOverflow问题:When are you supposed to use escape instead of encodeURI / encodeURIComponent?