2014-09-22 6 views
0

우리는 trigger.io로 빌드 된 ios 응용 프로그램을 가지고 있습니다. 이 응용 프로그램은 forge.request.ajax를 사용하여 서버에 데이터를 전송합니다. 우리의 요구 중 하나가 가끔 에러가 발생하고이를 반환 입력 매개 변수가 JSON 형식으로 전송됩니다forge.request.ajax는 "잘못된 매개 변수를 만족하지 못합니다 : url"

{"message":"Invalid parameter not satisfying: url","type":"UNEXPECTED_FAILURE"} 

이후 사용자가 입력 한 일부 문자는, 구조를 파괴하고이 오류가 발생할 수 있다는 것을 의심. 내 코드는 다음과 같습니다 :

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 요청에 입력 매개 변수에 대한 제한이 있습니까? 이후 나는 객관적인 - C 코드를 편집 할 수 없습니다, 나는 해결책이 필요합니다 -이 필터가 입력 된 무엇이든 작동하도록이 필터를 보장합니다.

답변

1

도움이 될 수 encodeURIComponent 사용 : 지금 When are you supposed to use escape instead of encodeURI/encodeURIComponent?

+0

: URL 매개 변수 그래서이 StackOverflow의 질문에서 살펴 본다 가치가있을 수 있지만이 개는의 점유율이의 이상이 같은 요청 데이터를 전달

var data = "some=data&and=some&more=data&which=is inputted by user"; forge.request.ajax({ url: "someurl.php", dataType: "json", data: encodeURIComponent(data) ... 

좀 더 자세히 살펴보면 새로 추가 된 매개 변수 중 하나가 실제로 encodeURIComponent로 필터링되지 않았으며 실패한 요청은 필터링되지 않은 특정 필드에 멀티 바이트 문자가 있음을 알았습니다. 아마 그렇습니다. 당신의 대답에 감사드립니다. –