Maison > développement back-end > Tutoriel Python > Explication détaillée de la méthode d'appel de python sur plusieurs domaines à partir de json

Explication détaillée de la méthode d'appel de python sur plusieurs domaines à partir de json

高洛峰
Libérer: 2017-01-13 13:01:17
original
1181 Les gens l'ont consulté

L'exemple de cet article décrit la méthode d'appel de python sur plusieurs domaines à partir de json. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Client :

<!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>
Copier après la connexion

Serveur

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()
Copier après la connexion

Pièce jointe : Introduction à la requête inter-domaines jquery method

Nous présentons ici la méthode de requête inter-domaines jQuery et fournissons un exemple de code simple pour référence.

Il y a eu un problème avec l'utilisation d'ajax jsonp dans le projet : le résultat de la requête a pu être obtenu avec succès, mais la méthode de réussite n'a pas été exécutée. Finalement, cela a été résolu.

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;}
}
Copier après la connexion

Description du paramètre de requête ajax :

chaîne dataType Le type de données renvoyé par le serveur.
S'il n'est pas spécifié, jQuery effectuera automatiquement des jugements intelligents basés sur les informations MIME du paquet HTTP. Par exemple, le type XML MIME est reconnu comme XML.

Valeurs disponibles :

"xml" : Renvoie un document XML pouvant être traité avec jQuery.
"html" : renvoie les informations HTML en texte brut ; la balise de script incluse sera exécutée une fois insérée dans le dom.
"script" : renvoie le code JavaScript en texte brut. Les résultats ne sont pas automatiquement mis en cache. Sauf si le paramètre "cache" est défini.

Remarque : lors de requêtes à distance (pas sous le même domaine), toutes les requêtes POST seront converties en requêtes GET. (Car la balise de script DOM sera utilisée pour le chargement)

"json" : renvoie les données JSON.
"text": Renvoie une chaîne de texte brut
"jsonp": format jsonp. Lors de l'appel d'une fonction au format jsonp, lors de l'accès à l'url, "callback=callbackFunName" sera automatiquement ajouté à la fin de l'url pour exécuter la fonction de rappel (callbackFunName).

chaîne jsonp

Réécrivez le nom de la fonction de rappel dans une requête jsonp. Cette valeur est utilisée pour remplacer la partie "callback" du paramètre url dans une requête get ou post telle que "callback=?". Par exemple, jsonp:'callbackfun' générera "callbackfun=?" .

jsonpCallback String Ce paramètre spécifie un nom de fonction de rappel pour la requête jsonp.

Cette valeur sera utilisée pour remplacer le nom de fonction aléatoire généré automatiquement par jQuery. C'est la partie point d'interrogation dans "callback=?"

Ceci est principalement utilisé pour permettre à jQuery de générer des noms de fonctions uniques afin que les requêtes soient plus faciles et que les fonctions de rappel et la gestion des erreurs puissent être facilement fournies.

Vous pouvez également spécifier ce nom de fonction de rappel lorsque vous souhaitez que le navigateur mette en cache les requêtes GET.

La principale différence entre les requêtes ajax jsonp et les requêtes ajax ordinaires est le traitement des résultats de réponse aux requêtes. Comme le montre le code ci-dessus, le résultat de la réponse est :

jsonpCallback({ name:"world",message:"hello world"});
Copier après la connexion

En fait, la fonction de rappel jsonp jsonpCallback est appelée et la chaîne ou le json auquel il faut répondre est transmis dans cette méthode concernant la personnalisation. Fonction de rappel jsonp, La fonction success ne fonctionne pas, probablement son implémentation sous-jacente (bien sûr, c'est la fonction de rappel par défaut, sinon la méthode success ne sera pas exécutée) :

function default_jsonpCallback(data)
{
  success(data); //在默认的回调方法中执行
}
Copier après la connexion

J'espère que cet article sera utile à tout le monde en Python La programmation aide.

Pour des explications plus détaillées sur la façon d'utiliser json pour appeler python sur plusieurs domaines, veuillez prêter attention au site Web PHP chinois pour les articles connexes !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal