因此,我实现了一个API提供程序,可供Web应用程序和移动应用程序访问。
这很可能不会是一个大型项目,但我想最大化我的学习经验,并尽我所能。
无论如何,根据我的理解,似乎最好将API提供程序服务和实际网站放在不同的域上以使扩展更容易。 例如,twitter的网站为twitter.com和api.twitter.com。
一个直接的问题是使用AJAX处理跨域问题。 根据我的收集,有两种方法可以实现跨域AJAX
这样,我会通过$ .ajax(设置)进行AJAX调用,然后传入与APIProxy控制器对应的网站URL。然后,APIProxy控制器将进行适当的POST服务器调用并处理JSON响应并将响应返回给AJAX回调函数。
我听说flXHR关于我不想使用Flash,因为像iPad或任何大量移动浏览器这样的设备都不支持Flash。
无论如何,我只是想问一下在单独的域或子域上使用API提供商管理网站的最佳做法是什么。
答案 0 :(得分:2)
当您请求一些JSON时,它会返回一个对象或数组。脚本标记不受相同域规则的约束。因此,做一个AJAX调用,你基本上会这样做:
<script src="Http://api.example.com?param1=something&etc"></script>
那将加载JSON,它将作为JavaScript执行。
...但是一个简单的对象或数组“执行”本身并不是很有用。因此,当您请求JSON时,还包括回调函数的名称。如果提供者看到提供了回调,而不是仅返回JSON,它实际上返回JavaScript:JSON作为参数传递给您的函数。
然后,当脚本加载时,调用您的函数(您已定义的函数),并使用JSON进行处理。
那是JSONP。
的参考书目强> 的