亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 64
粉絲 6
評論 2
訪問量 100642
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
CORS和JSONP兩種方式實現(xiàn)跨域請求
王嬌
原創(chuàng)
839人瀏覽過

學(xué)習(xí)總結(jié)

  • 利用cors和jsonp可以實現(xiàn)跨域數(shù)據(jù)請求
  • 這樣就可以實現(xiàn)前端數(shù)據(jù)和后端數(shù)據(jù)庫數(shù)據(jù)不在同一服務(wù)器上,如果后端數(shù)據(jù)比較龐大可以寄存在另一個專門用來存儲數(shù)據(jù)的服務(wù)器上

1.1CORS實現(xiàn)跨域請求 php11.edu中的cors.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>cors跨域請求</title>
  7. </head>
  8. <body>
  9. <h2>CORS跨域請求</h2>
  10. <div>
  11. <label for="stuName">姓名:</label>
  12. <span id="stuName"></span>
  13. </div>
  14. <div>
  15. <label for="stuAge">年齡:</label>
  16. <span id="stuAge"></span>
  17. </div>
  18. <div>
  19. <button onclick="getData()">通過CORS獲取其它域數(shù)據(jù)</button>
  20. </div>
  21. <script>
  22. function getData() {
  23. var xml = new XMLHttpRequest();
  24. xml.onreadystatechange = function () {
  25. if (xml.readyState === 4 && xml.status === 200) {
  26. $data = JSON.parse(xml.responseText);
  27. console.log($data.name, $data.age);
  28. document.getElementById("stuName").innerHTML = $data.name;
  29. document.getElementById("stuAge").innerHTML = $data.age;
  30. }
  31. };
  32. //當(dāng)前地址
  33. //http://php11.edu/0522/cors.html
  34. //跨域請求數(shù)據(jù),需要在data.php文件中設(shè)置請求頭
  35. xml.open("GET", "http://58city.com/data.php", true);
  36. //http://58city.com/data.php
  37. //data.php中設(shè)置請求頭
  38. //如果使用post請求,需要設(shè)置下面一條
  39. // header("Content-Type:text/plain");
  40. //設(shè)置頭部,不設(shè)置的話請求會被拒絕
  41. // header("Access-Control-Allow-Origin:http://php11.edu");
  42. xml.send(null);
  43. }
  44. </script>
  45. </body>
  46. </html>

1.2 58city.com域中的文件 data.php

  1. <?php
  2. //http://58city.com/data.php
  3. //如果使用post請求,需要設(shè)置下面一條
  4. header("Content-Type:text/plain");
  5. //設(shè)置頭部,不設(shè)置的話請求會被拒絕
  6. header("Access-Control-Allow-Origin:http://php11.edu");
  7. $stu['name'] = 'angle';
  8. $stu['age'] =32;
  9. echo json_encode($stu);
  10. ?>

1.3 代碼顯示效果


2.1 JSONP實現(xiàn)跨域請求 php11.edu中的jsonP.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>jsonP實現(xiàn)跨域請求</title>
  7. </head>
  8. <body>
  9. <h2>jsonP實現(xiàn)跨域請求</h2>
  10. <div>
  11. <label for="stuName">姓名:</label>
  12. <span id="stuName"></span>
  13. </div>
  14. <div>
  15. <label for="stuAge">年齡:</label>
  16. <span id="stuAge"></span>
  17. </div>
  18. <div>
  19. <button onclick="getData()">通過jsopP獲取其它域數(shù)據(jù)</button>
  20. </div>
  21. <script>
  22. //jsonP回調(diào)函數(shù)
  23. //handle中的參數(shù)是一個對象,(參數(shù)已經(jīng)解析json字符串為一個對象)
  24. function handle(jsonPData) {
  25. var $data = jsonPData;
  26. console.log($data.name, $data.age);
  27. document.getElementById("stuName").innerHTML = $data.name;
  28. document.getElementById("stuAge").innerHTML = $data.age;
  29. }
  30. //html頭部動態(tài)創(chuàng)建一個script標(biāo)簽,通過src屬性獲取外部數(shù)據(jù)
  31. //scr = "http://58city.com/data2.php?jsonp=回調(diào)函數(shù)名";
  32. function getData() {
  33. var script = document.createElement("script");
  34. script.src = "http://58city.com/data2.php?jsonp=handle";
  35. document.head.appendChild(script);
  36. //http://58city.com/data2.php
  37. //data2中的數(shù)據(jù)
  38. // <?php
  39. // $stu['name'] = 'Eric';
  40. // $stu['age'] =6;
  41. // $jsonStr = json_encode($stu);
  42. // //handle是請求數(shù)據(jù)的回調(diào)函數(shù)名,參數(shù)是一個json字符串
  43. // echo "handle($jsonStr)";
  44. // ?>
  45. }
  46. </script>
  47. </body>
  48. </html>

2.2 58city.com中的 data2.php

  1. <?php
  2. //http://58city.com/data2.php
  3. $stu['name'] = 'Eric';
  4. $stu['age'] =6;
  5. $jsonStr = json_encode($stu);
  6. //handle是請求數(shù)據(jù)的回調(diào)函數(shù)名,參數(shù)是一個json字符串
  7. echo "handle($jsonStr)";
  8. ?>

2.3代碼顯示效果


3.1利用jsonp實現(xiàn)跨域提取數(shù)據(jù) php11.edu中的showGoods.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>商品展示頁</title>
  7. <link rel="stylesheet" href="showGoods.css" />
  8. </head>
  9. <body>
  10. <div class="show" id="show">
  11. <h2>商品展示頁面</h2>
  12. <div>
  13. <span>編號</span><span>名稱</span><span>價格</span><span>單位</span
  14. ><span>時間</span>
  15. </div>
  16. </div>
  17. </body>
  18. <script>
  19. //jsonP回調(diào)函數(shù)
  20. //handle中的參數(shù)是一個對象,(參數(shù)已經(jīng)解析json字符串為一個對象)
  21. function handle(jsonPData) {
  22. // //創(chuàng)建一個div標(biāo)簽
  23. // var div = document.createElement("div");
  24. // //添加到html中
  25. // document.getElementById("show").appendChild(div);
  26. // //設(shè)置div的id值
  27. // div.id = "1";
  28. // //定義span標(biāo)簽
  29. // var span = document.createElement("span");
  30. // //span標(biāo)簽添加文件結(jié)點
  31. // var node = document.createTextNode("1");
  32. // //把文本結(jié)點的數(shù)據(jù)添加到span標(biāo)簽上
  33. // span.appendChild(node);
  34. // //把span標(biāo)簽添加到div里
  35. // document.getElementById("1").appendChild(span);
  36. for (var i = 0; i < jsonPData.length; i++) {
  37. var div = document.createElement("div");
  38. document.getElementById("show").appendChild(div);
  39. div.id = i;
  40. for (key in jsonPData[i]) {
  41. var res = jsonPData[i][key]; //獲取的數(shù)據(jù)
  42. //創(chuàng)建一個span標(biāo)簽
  43. var span = document.createElement("span");
  44. //span標(biāo)簽添加文件結(jié)點
  45. var node = document.createTextNode(res);
  46. //把文本結(jié)點的數(shù)據(jù)添加到span標(biāo)簽上
  47. span.appendChild(node);
  48. document.getElementById(i).appendChild(span);
  49. }
  50. }
  51. }
  52. //html頭部動態(tài)創(chuàng)建一個script標(biāo)簽,通過src屬性獲取外部數(shù)據(jù)
  53. //scr = "http://58city.com/data2.php?jsonp=回調(diào)函數(shù)名";
  54. var script = document.createElement("script");
  55. script.src = "http://58city.com/goods.php?jsonp=handle";
  56. document.head.appendChild(script);
  57. </script>
  58. </html>

3.2 58city.com中的 goods.php

  1. <?php
  2. require 'autoLoad.php';
  3. use compotents\conn\DBconn;
  4. $user =new DBconn();
  5. $table = 'tb_goods';//表名
  6. $limit =10; //顯示10條記錄
  7. $records = $user->select($table,'*','*',$limit);
  8. $jsonStr = json_encode($records);
  9. echo "handle($jsonStr)";
  10. ?>

3.3代碼顯示效果

批改老師:天蓬老師天蓬老師

批改狀態(tài):合格

老師批語:是不是覺得跨域請求非常的簡單呢
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費學(xué)