2014-09-22 61 views
0

我們有一個使用trigger.io構建的ios應用程序。此應用程序正在使用forge.request.ajax將數據發送到我們的服務器。我們的要求的一個偶爾會引發錯誤並返回此:forge.request.ajax返回:「無效的參數不令人滿意:url」

{"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代碼,所以我需要一個解決方案 - 最好是一個過濾器 - 它確保此函數可以與輸入的任何輸入一起工作。

回答

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?

+0

現在我仔細看了看,發現其中一個新添加的參數實際上沒有用encodeURIComponent進行過濾,失敗的請求都在該特定字段中有多字節字符,這些字符未經過濾。可能是這種情況,謝謝你的回答。 – 2014-09-29 11:19:22

相關問題