>  기사  >  백엔드 개발  >  json에서 도메인 전체에 걸쳐 Python을 호출하는 방법에 대한 자세한 설명

json에서 도메인 전체에 걸쳐 Python을 호출하는 방법에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-01-13 13:01:171165검색

이 문서의 예에서는 json에서 도메인 전체에 걸쳐 Python을 호출하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

클라이언트:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  <title>jQuery-跨域请求</title>
  <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
  <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
  </head>
   <script type="text/javascript">
  jQuery(document).ready(function(){
    $.ajax({
      type : "GET",
      url : "http://10.13.38.43:1234/?id=10&callback=?",
      dataType : "jsonp",
      jsonp: &#39;callback&#39;,
      success : function(json){
          alert(json.account);
        //$(&#39;#msg_box&#39;).html(json);
        //return true;
      }
    });
  });
  </script>
   <body>
  <div id="msg_box"></div>
  </body>
  </html>

서버

import web
urls=(&#39;/&#39;,&#39;Index&#39;,)
class Index:
    def GET(self):
      inputdata=web.input()
      mycallbackfun=inputdata.callback
      #return &#39;hello&#39; +inputdata.id
      return mycallbackfun+&#39;({"account":"XX","passed":"true","error":"null"})&#39;
app = web.application(urls, globals())
if __name__==&#39;__main__&#39;:
    app.run()

첨부: jquery 교차 도메인 요청 방법 소개

여기에서는 jQuery 크로스 도메인 요청 방법을 소개하고 참조할 수 있는 간단한 샘플 코드를 제공합니다.

프로젝트에서 ajax jsonp 사용에 문제가 있었습니다. 요청 결과는 성공적으로 얻었으나 성공 메소드가 실행되지 않았습니다. 결국 해결되었습니다.

function TestAjax()
{
  $.ajax({
    type : "get",
    async : false,
    url : "ajaxHandler.ashx", //实际上访问时产生的地址为: ajax.ashx?callbackfun=jsonpCallback&id=10
    data : {id : 10},
    cache : false, //默认值true
    dataType : "jsonp",
    jsonp: "callbackfun",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
    jsonpCallback:"jsonpCallback",
      //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
      //如果这里自定了jsonp的回调函数,则success函数则不起作用;否则success将起作用
    success : function(json){
      alert(json.message);
    },
    error:function(){
      alert("erroe");
    }
  });
}
function jsonpCallback(data) //回调函数
{
  alert(data.message); //
}
public class ajaxHandler : IHttpHandler
{
  public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/plain";
    string callbackfun = context.Request["callbackfun"];
    context.Response.Write(callbackfun + "({name:\"John\", message:\"hello John\"})");
    context.Response.End();
  }
  public bool IsReusable {get {return false;}
}

Ajax 요청 매개변수 설명:

dataType 문자열 서버가 반환한 데이터 유형입니다.
지정하지 않으면 jQuery는 HTTP 패킷 MIME 정보를 기반으로 자동으로 지능적인 판단을 내립니다. 예를 들어 XML MIME 유형은 XML로 인식됩니다.

사용 가능한 값:

"xml": jQuery로 처리할 수 있는 XML 문서를 반환합니다.
"html": 일반 텍스트 HTML 정보를 반환합니다. 포함된 스크립트 태그는 DOM에 삽입될 때 실행됩니다.
"script": 일반 텍스트 JavaScript 코드를 반환합니다. 결과는 자동으로 캐시되지 않습니다. "cache" 매개변수가 설정되지 않은 경우.

참고: 원격 요청(동일한 도메인이 아님)을 수행하는 경우 모든 POST 요청은 GET 요청으로 변환됩니다. (DOM 스크립트 태그를 사용하여 로드하기 때문입니다.)

"json": JSON 데이터를 반환합니다.
"text": 일반 텍스트 문자열
"jsonp":jsonp 형식을 반환합니다. jsonp 형식으로 함수 호출 시 해당 url에 접근하면 url 끝에 "callback=callbackFunName"이 자동으로 추가되어 콜백 함수(callbackFunName)를 실행하게 된다.

jsonp 문자열

jsonp 요청에서 콜백 함수 이름을 다시 작성합니다. 이 값은 "callback=?"과 같은 get 또는 post 요청에서 url 매개변수의 "callback" 부분을 대체하는 데 사용됩니다. 예를 들어 jsonp:'callbackfun'은 "callbackfun=?"을 생성하여 서버에 전달합니다. .

jsonpCallback 문자열 이 매개변수는 jsonp 요청에 대한 콜백 함수 이름을 지정합니다.

이 값은 jQuery에서 자동으로 생성된 임의의 함수 이름을 대체하는 데 사용됩니다. 위의 "callback=?"에 있는 물음표 부분입니다.

주로 jQuery에서 고유한 함수 이름을 생성하여 요청을 더 쉽게 하고 콜백 함수 및 오류 처리를 편리하게 제공할 수 있도록 하는 데 사용됩니다.

브라우저가 GET 요청을 캐시하도록 하려는 경우 이 콜백 함수 이름을 지정할 수도 있습니다.

ajax jsonp와 일반 ajax 요청의 주요 차이점은 요청 응답 결과를 처리하는 것입니다. 위 코드에서 볼 수 있듯이 응답 결과는 다음과 같습니다.

jsonpCallback({ name:"world",message:"hello world"});

실제로 jsonp 콜백 함수인 jsonpCallback이 호출되고, 응답할 문자열이나 json이 이 메서드에 전달됩니다. 함수, 성공 함수 작동하지 않을 것입니다. 아마도 기본 구현일 것입니다(물론 이것은 기본 콜백 함수입니다. 그렇지 않으면 성공 메서드가 실행되지 않습니다):

function default_jsonpCallback(data)
{
  success(data); //在默认的回调方法中执行
}

이 문서가 Python을 사용하는 모든 사람에게 도움이 되기를 바랍니다. 프로그래밍 도움.

json을 사용하여 도메인 간 Python을 호출하는 방법에 대한 자세한 설명은 PHP 중국어 웹사이트의 관련 기사를 참고하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.