• PHP AJAX JSONP实现跨域请求使用实例


    在之前我写过“php返回json数据简单实例”,“php返回json数据中文显示的问题”和“在PHP语言中使用JSON和将json还原成数组”。有兴趣的童鞋可以看看

    今天我写的是PHP AJAX JSONP使用的实例。不清楚jsonp是什么的请自己搜索

    实例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('success');
    	},
    	error:function(){
    		alert('fail');
    	}
    });
    

     ajax.php

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

     jquery-1.5.2.min.js

    自己上网下载

    当使用jsonp时,使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。


    实例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: 'GET',  //这里用GET
    			url: 'ajax.php',
                dataType: 'jsonp',  //类型
    			data: j,
    			jsonp: 'callback', //jsonp回调参数,必需
                async: false,
                success: function(result) {//返回的json数据
                    alert(result.message); //回调输出
    				
                    result = result || {};
                    if (result.msg=='err'){
                        alert(result.info);
                    }else if (result.msg=="ok"){
                        alert('提交成功');
                    }else{
                        alert('提交失败');
                    }
    				
                },
    			timeout: 3000
            })
            //...
        });
    	
    });
    

     ajax.php

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

     jquery-1.5.2.min.js

    自己从网上下载

  • 相关阅读:
    场曲——像差相关
    曲面探测器相关——查资料
    光学系统联合设计
    Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?'
    Python3.x:pip install pymssql安装时出错
    Python3:自动发送账单邮件
    Python3:input()输入函数的用法
    Python3:读取配置dbconfig.ini(含有中文)显示乱码的解决方法
    python3:利用smtplib库和smtp.qq.com邮件服务器发送邮件
    CSS3:布局display属性的flex(弹性布局)
  • 原文地址:https://www.cnblogs.com/huidaoli/p/3824581.html
Copyright © 2020-2023  润新知