格式明智,文件类型明智和实际使用明智?
当前回答
JSONP允许您指定传递JSON对象的回调函数。这允许您绕过同源策略,并将JSON从外部服务器加载到网页上的JavaScript中。
其他回答
JSONP允许您指定传递JSON对象的回调函数。这允许您绕过同源策略,并将JSON从外部服务器加载到网页上的JavaScript中。
JSONP代表“带填充的JSON”,它是一种从不同域加载数据的变通方法。它将脚本加载到DOM的头部,因此您可以访问信息,就像它加载在您自己的域中一样,从而绕过跨域问题。
jsonCallback(
{
"sites":
[
{
"siteName": "JQUERY4U",
"domainName": "http://www.jquery4u.com",
"description": "#1 jQuery Blog for your Daily News, Plugins, Tuts/Tips & Code Snippets."
},
{
"siteName": "BLOGOOLA",
"domainName": "http://www.blogoola.com",
"description": "Expose your blog to millions and increase your audience."
},
{
"siteName": "PHPSCRIPTS4U",
"domainName": "http://www.phpscripts4u.com",
"description": "The Blog of Enthusiastic PHP Scripters"
}
]
});
(function($) {
var url = 'http://www.jquery4u.com/scripts/jquery4u-sites.json?callback=?';
$.ajax({
type: 'GET',
url: url,
async: false,
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType: 'jsonp',
success: function(json) {
console.dir(json.sites);
},
error: function(e) {
console.log(e.message);
}
});
})(jQuery);
现在,我们可以使用JSONP和围绕JSON内容创建的回调函数通过AJAX请求JSON。 输出应该是JSON作为一个对象,然后我们可以不受限制地使用我们想要的任何数据。
“JSONP是带有额外代码的JSON”对于现实世界来说太简单了。不,你得有一点出入。如果一切都能正常工作,编程还有什么乐趣?
JSON不是JavaScript的子集。如果您所做的只是获取一个JSON对象并将其包装在一个函数调用中,总有一天您会被奇怪的语法错误所困扰,就像我今天一样。
JSONP本质上是带有额外代码的JSON,就像包裹在数据周围的函数调用。它允许在解析期间对数据进行操作。
JSONP是带填充的JSON。也就是说,在开头放一个字符串,在它周围放一对括号。例如:
//JSON
{"name":"stackoverflow","id":5}
//JSONP
func({"name":"stackoverflow","id":5});
结果是,您可以将JSON作为脚本文件加载。如果您之前设置了一个名为func的函数,那么当脚本文件加载完成时,该函数将使用一个参数(即JSON数据)调用。这通常用于允许使用JSON数据进行跨站点AJAX。如果您知道example.com提供的JSON文件与上面给出的JSONP示例类似,那么您可以使用如下代码来检索它,即使您不在example.com域中:
function func(json){
alert(json.name);
}
var elm = document.createElement("script");
elm.setAttribute("type", "text/javascript");
elm.src = "http://example.com/jsonp";
document.body.appendChild(elm);
推荐文章
- 用套接字发送消息到指定客户端。IO和node.js
- 在ASP中使用jQuery渲染局部视图。NET MVC
- 如何提取扩展从文件名字符串在Javascript?
- 在JavaScript中获取字符串中破折号后面的所有内容
- SystemJS和Webpack有什么不同?
- JSON到pandas DataFrame
- 如何使用jQuery去一个URL ?
- 停止/关闭由navigator.mediaDevices.getUserMedia打开的网络摄像头流
- Jquery禁用表单提交进入
- Javascript数组搜索和删除字符串?
- 如何复制对象属性在另一个对象?
- 如何绕过Access-Control-Allow-Origin?
- 我如何使用Node.js Crypto创建HMAC-SHA1哈希?
- JavaScript获取滚动窗口的X/Y位置
- JavaScript中不带else的三元运算符