除了 GET 之外的 jsonp http 方法(POST、PUT、OPTIONS、DELETE)
使用 jquery 内置的 $.ajax 方法看起来像这样
$(document).ready(function() {
$.ajax({
type: "GET",
url: "http://myurl.com/webservice&callback=?",
...
});
只想提请注意type: "GET",
使用 $.ajax 执行 http PUT 将只是更改type: "PUT",
此代码示例来自使用 jquery ajax 从跨域解析 JSON
不使用 $.ajax
使用谷歌代码的 jquery.jsonp https://github.com/jaubourg/jquery-jsonp
这是一个使用带有 GET 方法的 jquery.jsonp.js 的示例
$.jsonp({
cache: false,
url: 'http://www.mydomain.com/logicalurl/2/',
callbackParameter: 'callback',
timeout: 10000,
success: function(json, textStatus, xOptions) {
myglob = json;
MyModulePatternObject.initNew(json);
},
error: function (xOptions, textStatus) {
console.log("fail");
}
});
这完美地工作。如何进行 GET jsonp 请求不是我的问题。
在 $.jsonp 中,想要执行其他 http 方法:PUT POST DELETE OPTIONS ...?$.jsonp 支持type="PUT",
吗?
文档中根本没有提到它:API.md 和 TipsAndTricks.md 源代码中也没有。
更新
@ohgodwhy 有一个 hack (iframes / Proxy) 可以让 POST 2 跨域工作。 将 PUT/POST/DELETE 与 JSONP 和 jQuery 一起使用
@thefrontender 链接文章建议研究“跨源资源共享 (CORS)”
浏览器支持 CORS http://caniuse.com/cors
同一篇文章还说:“您可以将 JSON 编码为 URL 参数,但您甚至会为此感到羞耻。” 在整个历史中,羞耻从未阻止过任何人?简单、懒惰且在有限的情况下可以完成工作。
谢谢4大家的帮助...