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); }