2014-04-01 6 views
2

나는 api에 사용자 이름과 비밀번호를 게시하려했지만 jquery 게시물처럼 단순하지 않은 것처럼 보입니다. 나는이 400 오류를 계속 간다.AngularJs - JSON 게시물

코드 :

 $http({ 
      method: 'POST', 
      url: apiLink + '/general/dologin.json', 
      data: {"username":"someuser","password": "somepass"} 
     }).success(function(response) { 
      console.log(response) 
     }).error(function(response){ 
      console.log(response) 
     }); 

하지만이 줄을 추가하는 경우 : 데이터를

$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; 

을 변경 :

data: "username=someuser&password=somepass" 

가 작동합니다. 하지만 문제는 json을 사용해야한다는 것입니다. 구글 크롬에서

그리고 상세 정보 :

Request URL:http://coldbox.abak.si:8080/general/dologin.json 
Request Method:POST 
Status Code:400 Bad Request 
Request Headersview source 
Accept:application/json, text/plain, */* 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en,sl;q=0.8,en-GB;q=0.6 
Cache-Control:max-age=0 
Connection:keep-alive 
Content-Length:57 
Content-Type:application/x-www-form-urlencoded 
Host:coldbox.abak.si:8080 
Origin:http://localhost:8888 
Referer:http://localhost:8888/ 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)  Chrome/33.0.1750.154 Safari/537.36 
Form Dataview sourceview URL encoded 
{"username":"someuser","password":"somepass"}: 
Response Headersview source 
Access-Control-Allow-Origin:* 
Connection:close 
Content-Length:49 
Content-Type:application/json;charset=utf-8 
Date:Wed, 02 Apr 2014 07:50:00 GMT 
Server:Apache-Coyote/1.1 
Set-Cookie:cfid=b5bbcbe2-e2df-4eef-923f-d7d13e5aea42;Path=/;Expires=Thu, 31-Mar-2044  15:41:30 GMT;HTTPOnly 
Set-Cookie:cftoken=0;Path=/;Expires=Thu, 31-Mar-2044 15:41:30 GMT;HTTPOnly 
+0

문제를 이미 해결 한 경우; 질문 있니? 변환 기능을 설정하여 변환을 자동으로 수행 할 필요가 없도록 할 수 있습니다. 여기에서 자세한 정보 http://www.jeffryhouser.com/index.cfm/2013/10/1/Calling-a-ColdFusion-CFC-from-AngularJS and here http://victorblog.com/2012/12/20/ make-anglesjs-http-service-behave-like-jquery-ajax/ – JeffryHouser

+0

제 생각 엔 이것이 서버 측 문제입니다. 각도 코드가 올바르게 보입니다. 아마도 서버가 json 매개 변수를 처리하도록 구성되지 않았습니까? – alexsanford1

답변

2

나는 당신의 각 응용 프로그램은 당신이 당신의 JSON을 게시하는 할 수있는 서버와 동일한 도메인에없는 경우는 CORS 문제의 걸거야. 사용자 이름과 암호의 주위에 따옴표없이 그 차이가 있는지 확인 AngularJS performs an OPTIONS HTTP request for a cross-origin resource

+0

좋아요, 그렇습니다. API는 다른 서버에 있습니다. – Clem

+2

기본적으로 다른 서버에 모든 POST가 보내고 OPTIONS가 올바른 헤더로 응답해야합니다. 응답하지 않으면 브라우저는 실제 POST를 보내지 않습니다. 그러나 자세한 내용은 다른 답변을 읽어보십시오. –

0

가 데이터를 시도해보십시오 : { "somepass"이름 : "결과 someuser", 암호}

은 자세한 내용은이 대답을 참조하십시오.

+0

여전히 동일 : / – Clem

0

데이터에 JSON.stringify로 데이터를 변환해야합니다.