forge.request.ajax 返回: "Invalid parameter not satisfying: url"



我们有一个使用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代码,所以我需要一个解决方案,最好是一个过滤器,以确保该函数能够处理输入的任何输入。

使用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参数传递的gotchas的份额超过了它的份额,因此也值得一看StackOverflow这个问题:什么时候应该使用escape而不是encodeURI/encodeURIComponent?

相关内容

最新更新