从零开始学 Web 之 Ajax(七)跨域 (5)

实例3:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://www.likecs.com/template.js"></script> <!-- data.data --> <script type="text/html"> <ul> {{each arr as value i}} <li>{{value}}</li> {{/each}} </ul> </script> <script> window.onload = function(){ var data = [\'文艺\', \'博客\', \'摄影\', \'电影\', \'民谣\', \'旅行\', \'吉他\']; var temp = {}; temp.arr = data; var html = template("test",temp);//data.xxx document.querySelector("#content").innerHTML = html; } </script> </head> <body> <div> <ul> <li>文艺</li> <li>博客</li> </ul> </div> </body> </html>

1、当我们获取的数据没有内部属性的时候,比如上面的例子,不可以直接使用 data,不然程序会认定为 data.data 属性,而这个属性是不存在的。

2、我们可以通过增加一个对象,增加这个对象的一个属性 arr,其值为 data,然后遍历 arr 来使用。

示例4:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://www.likecs.com/template.js"></script> <script type="text/html"> <p>转义:{{#value}}</p> <p>不转义: {{value}}</p> </script> <script> window.onload = function(){ // 这里的数据当中包含特殊字符 var data = { value: \'<span>hello world!</span>\' }; var html = template(\'test\', data); document.getElementById(\'content\').innerHTML = html; } </script> </head> <body> <div></div> </body> </html>

1、我们获取到的数据也可能是 html 的代码。

2、在定义的模板中调用的时候,通过在属性前加 “#” 可以将 html 代码转义处理。否则只会理解成字符串。

7、第三方接口网站

MOB:,里面有个 MobAPI 服务,有很多好玩的 API 接口,比如天气、电影、汽车等。

一般第三方的接口都需要先注册,然后获得 appkey,才能使用。

8、存在的问题

问题:如果第三方接口返回的是 json 而不是 jsonp 格式的数据的话,怎么办么?

我们知道 Ajax 需要返回的是函数的调用,函数的参数是 json 格式的,如果第三方直接返回一个 json 的字符串怎么办呢?由于不是返回的函数调用,按照跨域的方式肯定是会报错的。

解决办法:通过自己的服务器作为中介来实现。

首先,自己的服务器后台,不管是 PHP 还是 JSP,来获取第三方的数据,由于后台不受同源策略的限制,所以自己的服务器获取到 json 数据后,echo 回来,然后我们前端再使用 Ajax 的四步骤来获取后台返回的 json 类型的字符串。

从零开始学 Web 之 Ajax(七)跨域

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwszf.html