jsonのクロスドメイン呼出しpythonコードの例

5793 ワード

クライアント:
<!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: 'callback',  
            success : function(json){  
                	alert(json.account);
                //$('#msg_box').html(json);  
                //return true;  
            }  
        });  
    });  
        

    </script>
     <body>
    <div id="msg_box"></div>
    </body>
    </html>

 
職務に服する
import web
urls=('/','Index',)
class Index:
        def GET(self):
            inputdata=web.input()
            mycallbackfun=inputdata.callback
            #return 'hello' +inputdata.id
            return mycallbackfun+'({"account":"XX","passed":"true","error":"null"})'
            

app = web.application(urls, globals())
if __name__=='__main__':
        app.run()
記事の参考:
jqueryドメイン横断要求方法の概要
2012-12-25 21:01
来源:ブログ園
作者:ベンwu
店名:T 124
[要約]ここでは、jqueryドメイン間要求方法を紹介し、参照のために簡単なコード例を提供する。
プロジェクトの中でajax jsonpの使用について問題がありました。要求結果を得ることができますが、successの方法を実行していません。やっとできました。記録してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26functionTestAjax() {    $.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");        }    });}  functionjsonpCallback(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 stringサーバから返ってくるデータの種類。
指定されていない場合、jQueryは自動的にHTTPパッケージMIME情報に基づいて知能的に判断します。たとえばXML MIMEタイプはXMLと識別されます。
利用可能な値:
「xml」:XMLドキュメントに戻り、jQueryで処理できます。
「html」:テキストのみのHTML情報を返す。含まれるスクリプトタグはdomを挿入するときに実行されます。
「スクリプト」:純粋なテキストJavaScriptコードを返します。結果は自動キャッシュされません。「cache」パラメータが設定されていない限り。
注意:リモート要求時(同じドメインではなく)、すべてのPOST要求はGET要求に変わります。(DOMのscriptタグを使ってロードするので)
「JSON」:JSONデータを返します。
「text」:テキストの文字列を返します。
「json」:jsop形式です。Jsonp形式で関数を呼び出すと、urlを訪問する際に自動的にurlの後ろに「calback=calbackFunName」といったようにコールバック関数を追加します。
json string
jsonp要求では、コールバック関数の名前を書き換えます。この値は、「calback=?」というgetまたはpost要求の中でurlパラメータの「calback」の部分に代わります。例えば、jsop:'calbackfun'は、「calbackfun=?」を生成してサーバに伝えます。
jsonpCallback Stringこのパラメータはjsonp要求のためのコールバック関数名を指定します。
この値はjQueryが自動的に生成する確率関数名に代わるものです。上の「calback=?」の疑問符部分です。
これは主にjQueryに度数独特の関数名を生成させるために使われています。このような要求はより簡単であり、また、コールバック関数とエラー処理を簡単に提供することができます。
ブラウザにGET要求をキャッシュしたい場合、このコールバック関数名を指定しても良いです。
ajax jsonpと普通のajax要求の主な違いは、応答結果を要求する処理である。上記のコードのような応答結果は以下の通りです。
1jsonpCallback({ name:"world",message:"hello world"});実際にはjsonpコールバック関数jsonpCallbackを呼び出して、応答する文字列やjsonをこの方法に導入します。jsonのコールバック関数を指定しましたが、success関数は機能しません。その底の実現を大まかに説明します。
1
2
3
4functiondefault_jsonpCallback(data){    success(data); // }