2013-11-09 3 views
3

저는 API에 데이터를 게시하기 위해 angularjs의 $ http 서비스를 사용하고 있습니다. 내가 추가 할 때까지 .. 좋은 작품과

var request = { 
    'method': 'POST', 
    'url': API_URL + apiActionName, 
    'data': JSONRequest, 
    'withCredentials': true, 
}; 
$http(request). 
success(function(data, status, headers, config) { 
    // handle success 
}). 
error(function(data, status, headers, config) { 
    // handle error 
} 

이 데이터가이

을 포함하지만 때 데이터가 다음 JSONRequest

{ 
    'text':'this is some text' 
} 

포함 작동 (예에서 JSONRequest를) 데이터의 내용에 등호

{ 
    'text':'this is = some text' 
} 

요청이 이스케이프 처리되고 서버가 POST로 아무 것도 할 수 없습니다 !! 그것은 다른 모든 문자와 함께 작동하는 것 같습니다.

도움이 될 것입니다. 감사합니다.

+0

이상합니다. 어쩌면 큰 따옴표를 사용해보십시오. –

답변

1

URI 인코딩과 관련이 있습니다. 낮은 레벨의 AJAX API를 전송하는 문자열은 인코딩되지 않았습니다. 즉, 게시물에서 = 기호를 보았을 때 uri 인코딩을 가정하여 구문 분석하고 있음을 의미합니다.

JSONRequest는 원래 var request 위의 줄에 정의되어 있으므로이 정보에 대한 모든 정보가 제시되지 않았을 수 있습니다. 미안합니다. 다음과 같이 정의했다 : requestObject이

{ 
    'text':'this is = some text' 
} 
나는이 문제를 해결하고 내 API는 더 호출했다

var JSONRequest = 'JSON=' + encodeURIComponent(JSON.stringify(requestObject)); 

다음과 같이 JSON 요청을 인코딩 URI를 종료

var JSONRequest = { 
    'JSON': requestObject; 
} 

어디에 HTTP 프로토콜에 강력합니다.

모든 도움에 감사드립니다!

+0

그건 그렇고 JSON = API에 의해 받아 들여지는 래퍼 객체입니다. – Aaron

+0

이것이 저에게 효과적이었습니다. – TrtG

1

항상 POST 페이로드에는 JSON.Stringify()을 사용합니다.

+0

angle은 JSON 문자열을 전달하지 않으면 내부적으로 동일하게 처리됩니다. 'http.js'는 객체를 확인하고 내부'toJson' 메소드를 사용하여 JSON.stringify를 호출합니다. https://github.com/angular/angular.js/ blob/master/src/Angular.js # L935 – charlietfl

+1

JSON.stringify()에서 stringify는 소문자로되어 있습니다. – TrtG