JSONP
JSONP ÊÇÒ»ÖÖÎÞÐ迼ÂÇ¿çÓòÎÊÌâ¼´¿É´«ËÍ JSON Êý¾ÝµÄ·½·¨¡£
JSONP ²»Ê¹Óà XMLHttpRequest ¶ÔÏó¡£
JSONP ʹÓà <script> ±êǩȡ¶ø´úÖ®¡£
JSONP ¼ò½é
JSONP Ö¸µÄÊÇ JSON with Padding¡£
´ÓÁíÒ»¸öÓòÇëÇóÎļþ»áÒýÆðÎÊÌ⣬ÓÉÓÚ¿çÓòÕþ²ß¡£
´ÓÁíÒ»¸öÓòÇëÇóÍⲿ½Å±¾Ã»ÓÐÕâ¸öÎÊÌâ¡£
JSONP ÀûÓÃÁËÕâ¸öÓÅÊÆ£¬²¢Ê¹Óà script ±êÇ©Ìæ´ú XMLHttpRequest ¶ÔÏó¡£
<script src="demo_jsonp.php">
Server Îļþ
·þÎñÆ÷ÉϵÄÎļþÔÚº¯Êýµ÷ÓÃÖзâ×°½á¹û£º
ʵÀý
<?php
$myJSON = '{ "name":"Bill Gates", "age":62, "city":"Seattle" }';
echo "myFunc(".$myJSON.");";
?>
½á¹û·µ»Ø¶ÔÃûΪ "myFunc" µÄº¯ÊýµÄµ÷Óã¬ÆäÖÐµÄ JSON Êý¾ÝΪ²ÎÊý¡£
ÇëÈ·±£¿Í»§¶Ë´æÔڸú¯Êý¡£
JavaScript º¯Êý
º¯Êý "myFunc" λÓÚ¿Í»§¶Ë£¬ÓÃÓÚ´¦Àí JSON Êý¾Ý£º
ʵÀý
function myFunc(myObj) {
document.getElementById("demo").innerHTML = myObj.name;
}
´´½¨¶¯Ì¬½Å±¾±êÇ©
ÉÏÀý»áÔÚÒ³Ãæ¼ÓÔØÊ±Ö´ÐÐ "myFunc" º¯Êý£¬¸ù¾ÝÄú·ÅÖýű¾±êÇ©µÄλÖã¬ÕâÑù²»ºÜÁîÈËÂúÒâ¡£
Script Ö»Ó¦¸ÃÔÚÐèҪʱ´´½¨£º
ʵÀý
ÔÚ°´Å¥±»µã»÷ʱ´´½¨ºÍ²åÈë <script> ±êÇ©£º
function clickButton() {
var s = document.createElement("script");
s.src = "demo_jsonp.php";
document.body.appendChild(s);
}
¶¯Ì¬ JSONP ½á¹û
ÉÏÀýÈÔÈ»ÊǾ²Ì¬µÄ¡£
¿Éͨ¹ýÏò PHP Îļþ·¢ËÍ JSON À´´´½¨¶¯Ì¬µÄÀý×Ó£¬È»ºó¸ù¾ÝÕâ¸ö php Îļþ»ñµÃµÄÐÅÏ¢ÈÃËü·µ»ØÒ»¸ö JSON ¶ÔÏó¡£
PHP Îļþ
<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_GET["x"], false);
$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT ".$obj->$limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo "myFunc(".json_encode($outp).")";
?>
PHP Îļþ½âÊÍ£º
- °ÑÇëÇóת»»Îª¶ÔÏó£¬Ê¹Óà PHP º¯Êý json_decode()¡£
- ·ÃÎÊÊý¾Ý¿â£¬²¢Óñ»ÇëÇóµÄÊý¾ÝÌî³äÊý×é¡£
- Ïò¶ÔÏóÌí¼ÓÊý×é¡£
- ʹÓà json_decode() º¯Êý°Ñ¸ÃÊý×éת»»Îª JSON¡£
- Óà "myFunc()" ·â×°·µ»Ø¶ÔÏó¡£
JavaScript ʵÀý
½«´Ó php Îļþµ÷Óà "myFunc" º¯Êý£º
function clickButton() {
var obj, s
obj = { "table":"products", "limit":10 };
s = document.createElement("script");
s.src = "jsonp_demo_db.php?x=" + JSON.stringify(obj);
document.body.appendChild(s);
}
function myFunc(myObj) {
var x, txt = "";
for (x in myObj) {
txt += myObj[x].name + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
»Øµ÷º¯Êý
Èç¹ûÄúÎÞ·¨¿ØÖÆ·þÎñÆ÷Îļþ£¬ÄÇôÈçºÎʹ·þÎñÆ÷Îļþµ÷ÓÃÕýÈ·µÄº¯ÊýÄØ£¿
ÓÐʱ·þÎñÆ÷ÎļþÌṩ»Øµ÷º¯Êý×÷Ϊ²ÎÊý£º
ʵÀý
PHP Îļþ»áµ÷ÓÃÄú×÷Ϊ»Øµ÷²ÎÊý´«µÝµÄº¯Êý£º
function clickButton() {
var s = document.createElement("script");
s.src = "jsonp_demo_db.php?callback=myDisplayFunction";
document.body.appendChild(s);
}