[英]Synchronous cross sub-domain POST request with jQuery
我正在尝试执行跨域POST请求并且已经打了一个墙(或两个)。
我无法在服务器上放置代理页面 - 因此这不是一个选项。
我研究了getJSON,除了我需要POST不GET之外,它工作得很好。
是否有可能做到这一点? 如果不是 ,有人可以向我解释getJSON如何工作以及为什么我不能做出替代方案。
您不能使用XMLHttpRequest(aka AJAX)发出跨域请求(GET / POST /等)。
当服务器支持它时,您可以做的是发出JSONP请求。 JSONP请求的工作方式如下:
如果您无法控制要发布的服务器,那么您运气不佳,JSONP对您不会有太大帮助。 无论服务器返回什么都将在SCRIPT标记中,并且如果格式不正确,很可能会抛出错误。
有关这方面的更多信息,我建议您查看基本的$ .ajax函数而不是快捷方式。 (在Ajax下的jQuery文档中。抱歉,我无法发布更多链接)
同样,如果您无法控制要发布的服务器,则可能需要查看代理。 否则,IFRAME可能是您唯一的其他选择。 还有一种方法可以使用SWF(flash)对象来实现此目的。 我既没有尝试过,但它们是XMLHttpRequest对象限制的解决方法。
希望我能帮忙!
你可以做一个帖子,但你想要的是一个JSONP请求来解决跨域问题。 本质上,您提供了一个回调函数,请求以脚本内容的形式返回,并使用请求中的JSON数据调用您的回调。 您的服务器端脚本需要使用围绕JSON对象的回调函数将数据作为函数调用提供。
请参阅post功能的文档。
$.post( '/example.com/controller/action?callback=?',
{ param: "data" },
function(data) {
...do something with the data...
}, 'jsonp' );
ASP.NET MVC对此的操作:
[AcceptVerbs( HttpVerbs.Post )]
public ActionResult Action( string param, string callback )
{
var jsonData = ...do something and construct some data in JSON...
return Content( callback + "(" + jsonData + ");" );
}
如果你想要做的跨域POST那么最简单的解决方案是提供一个在这里利玛窦。 它对我很有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.