Heim  >  Artikel  >  Backend-Entwicklung  >  AJAX verwendet JSONP, um eine domänenübergreifende Datenübertragung zu erreichen

AJAX verwendet JSONP, um eine domänenübergreifende Datenübertragung zu erreichen

WBOY
WBOYOriginal
2016-08-08 09:29:20942Durchsuche

Vor einiger Zeit dachte ich plötzlich darüber nach, einige IFRAME-Aufrufe auf der Website vollständig zu entfernen, also wollte ich Ajax+json verwenden, um es zu implementieren, aber später stellte ich fest, dass „Kein Zugriff“ angezeigt wurde -Control-Allow-Origin" wurde gemeldet. ' Header ist auf dem vorhanden Fehler „angeforderte Ressource“. Da Ajax nicht domänenübergreifend sein kann, wird es im JSONP-Modus implementiert, was sehr einfach ist:

1. Client-Quellcode

<!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. Serverseitiger Quellcode 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);
}
?>


Das Obige stellt die Verwendung von JSONP durch AJAX vor, um eine domänenübergreifende Datenübertragung zu erreichen, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn