Maison >développement back-end >tutoriel php >AJAX et JSONP implémentent des requêtes inter-domaines en PHP

AJAX et JSONP implémentent des requêtes inter-domaines en PHP

小云云
小云云original
2018-03-10 09:33:312665parcourir

Avant, j'ai écrit "Un exemple simple de php renvoyant des données json", "php renvoie un problème d'affichage chinois des données json" et "Utiliser JSON en langage PHP et réduire json dans un tableau". J'espère que cela aide tout le monde.

Exemple 1

test.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script src="jquery-1.5.2.min.js"></script>
<script src="ajax.js"></script>
</head>
 
<body>
</body>
</html>

ajax.js

$.ajax({
    type : "post",
    url : "ajax.php",
    dataType : "jsonp",
    jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
    jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
    success : function(json){
        alert(&#39;success&#39;);
    },
    error:function(){
        alert(&#39;fail&#39;);
    }
});

ajax.php

<?php
 
$data = ".......";
$callback = $_GET[&#39;callback&#39;];
echo $callback.&#39;(&#39;.json_encode($data).&#39;)&#39;;
exit;
 
?>

jquery-1.5.2.min.js

Téléchargez-le vous-même

Lors de l'utilisation de jsonp, lors de l'appel de fonctions sous forme JSONP, telles que "myurl?callback=?" jQuery remplacera automatiquement ? par le nom de fonction correct pour exécuter la fonction de rappel.

Exemple 2

test.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script src="jquery-1.5.2.min.js"></script>
<script src="ajax.js"></script>
</head>
 
<body>
<form name="form">
<input type="text" name="sex">
<input type="text" name="age">
<input type="button" id="btn" value="button" />
</form>
</body>
</html>

ajax.js

$(document).ready(function(){
 
    $("#btn").click(function(k) {
        //...
        var j = $("form").serializeArray();//序列化name/value
        $.ajax({
            type: &#39;GET&#39;,  //这里用GET
            url: &#39;ajax.php&#39;,
            dataType: &#39;jsonp&#39;,  //类型
            data: j,
            jsonp: &#39;callback&#39;, //jsonp回调参数,必需
            async: false,
            success: function(result) {//返回的json数据
                alert(result.message); //回调输出
                 
                result = result || {};
                if (result.msg==&#39;err&#39;){
                    alert(result.info);
                }else if (result.msg=="ok"){
                    alert(&#39;提交成功&#39;);
                }else{
                    alert(&#39;提交失败&#39;);
                }
                 
            },
            timeout: 3000
        })
        //...
    });
     
});

ajax.php

<?php
$callback = isset($_GET[&#39;callback&#39;]) ? trim($_GET[&#39;callback&#39;]) : &#39;&#39;; //jsonp回调参数,必需
$date = array("age"=>$_GET[&#39;age&#39;], "message"=>$_GET[&#39;age&#39;]);
$date["msg"]="err";
$date["info"]="因人品问题,发送失败";
$tmp= json_encode($date); //json 数据
echo $callback . &#39;(&#39; . $tmp .&#39;)&#39;;  //返回格式,必需
?>

jquery-1.5.2.min.js

Téléchargez-le vous-même depuis Internet

Recommandations associées :

Analyse de l'instance du service de requête inter-domaines JS

Méthodes de traitement des requêtes inter-domaines front-end et back-end Ajax

Vue utilise une explication détaillée de l'instance de données de requête inter-domaines axios

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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