我正在尝试做一个跨域 POST 请求并且已经碰壁(或两个)。
我不能在服务器上放置代理页面 - 所以这不是一个选项。
我研究了 getJSON,它很好用,只是我需要 POST 而不是 GET。
是否有可能做到这一点?如果不是,有人可以向我解释 getJSON 是如何工作的,以及为什么我不能做一个 POST 替代方案。
我正在尝试做一个跨域 POST 请求并且已经碰壁(或两个)。
我不能在服务器上放置代理页面 - 所以这不是一个选项。
我研究了 getJSON,它很好用,只是我需要 POST 而不是 GET。
是否有可能做到这一点?如果不是,有人可以向我解释 getJSON 是如何工作的,以及为什么我不能做一个 POST 替代方案。
您不能使用 XMLHttpRequest(又名 AJAX)发出跨域请求(GET / POST / 等)。
当服务器支持它时,您可以做的是发出 JSONP 请求。JSONP 请求的工作方式如下:
如果您无法控制要发布到的服务器,那么您就不走运了,JSONP 对您没有多大好处。服务器返回的任何内容都将在 SCRIPT 标记中,如果格式不正确,很可能会引发错误。
有关这方面的更多信息,我建议您查看基本的 $.ajax 函数而不是快捷方式。(在 Ajax 下的 jQuery 文档中。抱歉,我不能发布更多链接)
同样,如果您无法控制要发布到的服务器,则可能需要查看代理。否则,IFRAME 可能是您唯一的其他选择。还有一种方法可以使用 SWF(闪存)对象来完成此操作。我都没有尝试过,但它们是 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,那么最简单的解决方案是Matteo提供的解决方案。它对我很有用