Joh*_*ohn 10 ajax jquery cross-domain
我想对Web服务进行一次即发即弃的jQuery调用.
基本上,我想发送一个JSON对象http://myservice.com/uservisits/create,我不关心接收任何类型的返回响应.但是,我们希望为我们的几个域使用相同的服务,这意味着要遇到与Ajax相关的跨域限制.
你怎么做到这一点?JSONP上有很多这样的东西,但我不需要处理响应.我觉得我错过了一个明显的细节.
发送http GET请求的最简单方法是使用图像信标:
var json = encodeURIComponent(JSON.stringify(obj));
new Image().src = "http://myservice.com/uservisits/create?JSON=" + json;
Run Code Online (Sandbox Code Playgroud)
而且,您甚至可以通过处理load和error事件获得一些信息.当然,如果响应不是图像,error则会调用该事件,而不是load.您可以将服务设置为返回单个像素图像以解决该问题.
编辑:您提到您可能更喜欢使用HTTP POST.它不像图像信标那么简单,但您可以使用隐藏的iframe创建跨域帖子:
var frame = $("<iframe>").hide();
frame.load(function() {
var frameBody = frame.contents().find("body");
var form = $("<form>", {
action: "http://myservice.com/uservisits/create",
method: "POST"
});
form.appendTo(frameBody);
$("<input/>", {
name: "json",
value: json
}).appendTo(form);
form[0].submit();
});
frame.appendTo("body");
Run Code Online (Sandbox Code Playgroud)
我认为 jQuery已经内置了这样的东西.您可以尝试深入学习jQuery.ajax文档.如果没有,你可能会找到一个插件来做到这一点.