AJAX는 JSONP를 사용하여 도메인 간 데이터 전송을 달성합니다.

WBOY
풀어 주다: 2016-08-08 09:29:20
원래의
960명이 탐색했습니다.

얼마 전 갑자기 웹사이트에서 일부 IFRAME 호출을 완전히 제거해야겠다는 생각이 들어서 ajax+json을 이용해서 구현하려고 했으나 나중에 "No'Access"라는 것을 발견했습니다. -Control-Allow-Origin"이 보고되었습니다. ' 헤더가 요청한 리소스" 오류입니다. Ajax는 도메인을 넘을 수 없기 때문에 매우 간단한 JSONP 모드로 구현됩니다.

1. 클라이언트 소스 코드

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>

<body>
<script language="javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function() {
		var url = "http://192.168.1.102/index_szxx_ajax.php";
		$.ajax({
		  type: "get",
          async: false,
		  url: url,
		  dataType: "jsonp",
		  jsonp: "callback",
		  jsonpCallback:"infolist",
		  success: function infolist(data){//数据返回后的处理函数infolist
			  var backdata="";
			  for(var a in data){
				  for(var b in data[a]){
					  backdata=backdata+data[a][b]+"<br>";	
				  }
			  }
			  $("#backdata").html(backdata);
		}
	  });
});

</script>
<div id="backdata">正在查询...</div>
</body>
</html>
로그인 후 복사

2. 서버측 소스코드 index_szxx_ajax.php

<? require("inc/conn.php");?>
<?
$rows=array();

$sqlinfolist="select * from v_info where  info_state=1 and user_class=0 order by update_date desc limit 0,9";

$rs_listinfo=$db->query($sqlinfolist);
while(($r=$rs_listinfo->fetch_assoc())==true){
	$rows[]=$r;	
}
exit("infolist(".json_encode(gbk2utf8($rows)).");");//返回查询的JSON格式结果集并调用回调函数<span style="font-family: Arial, Helvetica, sans-serif;">infolist</span>


//服务器端数据库为gb2312编码,转为JSON格式必须为UTF-8编码否则有汉字的单元值会变成NULL;
function gbk2utf8($data){
    if(is_array($data)){
        return array_map('gbk2utf8', $data);
    }
    return iconv('gbk','utf-8',$data);
}
?>
로그인 후 복사


위 내용은 콘텐츠 측면을 포함하여 도메인 간 데이터 전송을 달성하기 위한 AJAX의 JSONP 사용을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿