夺命雷公狗jquery---60Ajax跨域请求之方法1
Ajax技术由于受到浏览器的限制,该方法不允许跨域通信。
同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。
JSONP是一个非官方的协议,它允许在服务器端集成script tags返回至客户端,通过javascript callback的形式实现跨域访问。
JSON与JSONP技术区别
面试题:json与jsonp是不是同一种技术,请说明
答:json技术一种万能的数据传输格式,主要实现数据的传输与存储。
jsonp技术是一种非官方协议,主要用于解决Ajax的跨域请求问题。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="js/jquery.js"></script> <script> //页面载入事件 $(function(){ //绑定相关的事件 $('#btnok').bind('click',function(){ //发送ajax $.ajax({ type:'get', url:'http://www.test.com/ajax.php', cache:false, dataType:'jsonp', jsonp:'fn', success:function(msg){ $(msg).each(function(i,item){ var id = item.id; var username = item.username; $('#result').append(id+'---'+username+'<hr />'); }); } }) }); }); </script> </head> <body> <input type="button" id="btnok" value="获取数据" /> <hr /> <div id="result"></div> </body> </html>
PHP代码如下:
<?php $fn = $_GET['fn']; //链接数据库(CRM客户关系管理系统接口) mysql_connect("localhost",'root',''); mysql_query('use xsphp'); mysql_query('set names utf8'); //组装sql语句 $sql = "select * from admin"; $res = mysql_query($sql); $data = array(); while($row = mysql_fetch_assoc($res)){ $data[] = $row; } $str = json_encode($data); echo $fn."($str)"; //这里如果加上单引号就会变成字符串类型,不加单引号他就会变成OBJ类型(也就是一个数组)