【问题标题】:forge.request.ajax returns: "Invalid parameter not satisfying: url"forge.request.ajax 返回:“无效参数不满足:url”
【发布时间】:2014-09-22 15:05:48
【问题描述】:

我们有一个使用 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 代码,所以我需要一个解决方案——最好是一个过滤器——它可以确保这个函数与输入的任何输入一起工作。

【问题讨论】:

    标签: ajax afnetworking trigger.io


    【解决方案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?

    【讨论】:

    • 现在我仔细观察并意识到其中一个新添加的参数实际上并未使用 encodeURIComponent 过滤,并且失败的请求在该特定字段中都有未过滤的多字节字符。大概是这样,谢谢你的回答。
    猜你喜欢
    • 2013-09-20
    • 2012-02-14
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多