2012-07-20 3 views
8

JSON Python webservice에서 데이터를 요청하는 AJAX 함수를 작성하고 있습니다. 같은 내 AJAX 요청 같습니다Python을 사용하는 JSONP 웹 서비스

return json.dumps({'a':1, 'b':2 }) 

내 AJAX 기능은 다음과 같습니다, 내 파이썬 웹 서비스 요청을 처리하는 기능을 가지고 지금은

url = "http://localhost:8001/blah" 
    $.ajax({ 
     url: url, 
     type: 'get', 
     dataType: 'jsonp', 
     success: function(data) { 
      console.log('hi') 
     } 
    }); 

다음 리턴 문이 '/ ㅋ'로 내 Python Webservice에서 응답을 성공적으로 가져 오지 못했지만 Firebug에서 오류가 발생하지 않습니다. 내 webservice 또는 javascript가 잘못 되었습니까?

+2

JSONP가 제공되지 않습니다. –

답변

9

Jquery의 JSONP 데이터 유형을 사용할 때 콜백 함수 이름이 URL의 일부로 GET 매개 변수로 전송되므로 사실 "http : // localhost : 8001/blah? 콜백 = json125348274839 ".

다음과 같아야합니다 웹 서버에서 응답 :

return "%s({'a':1, 'b':2 })" % _GET_PARAMS('callback') 

때문에 "({ 'A': 1, 'B': 2}) json125348274839"처럼 뭔가를해야만 반환합니다 웹 서버

희망이 도움이됩니다.

+0

아주 가깝습니다. 두 가지 세부 사항을 놓쳤습니다. 하나는 어리석은 것이고, 하나는 나쁜 것입니다. –

+0

빠르고 지저분한! +1 – loretoparisi

1

파이썬 웹 서비스에서 로깅을 켜거나 추가하십시오. 웹 서버 로그를 검사하십시오 ... 자바 스크립트 클라이언트로부터 요청을 받고 있습니까? 응답을 리턴하는 웹 서버가 로깅되어 있습니까?

아마도 그것은 사용중인 프레임 워크에 따라 다릅니다. 핸들러 함수에서 문자열을 반환하는 것만 큼 간단합니까? 아마도 핸들러는 문자열 목록을 반환한다고 가정하고 목록을 가져 오지 않기 때문에 클라이언트에 아무 것도 반환하지 않습니다. 웹 서버 로그에서 오류를 찾으십시오. 그것은 도움이되지 않는 경우

1

당신은 다음,) = 첫 번째 줄에 체크를

을 인용하고 세미콜론을 닫는 깜빡 :

  1. 목록 항목은 파이썬 서비스로 사용하고있는
  2. ? 장고, 플라스크, 다른 거? 어쩌면 파이썬 코드를 제공 할 수 있습니까?
  3. 또한 'Net'Firebug의 탭을보고 'url'에 대한 요청이 실제로 처리되었는지 (404 또는 50x 코드가 아니라 200이지만) 'Response'하위 탭을 확인하십시오.

희망이 있습니다.

+0

감사합니다. – Michael

6

잭이 얻었습니다. 내 자바 스크립트가 정확했다. 파이썬 리턴 문을 다음과 같이 변경했습니다.

callback = request.args.get('callback') 
return '{0}({1})'.format(callback, {'a':1, 'b':2})