我正在尝试执行跨域POST请求并且已经打了一个墙(或两个).
我无法在服务器上放置代理页面 - 因此这不是一个选项.
我研究了getJSON,除了我需要POST不GET之外,它工作得很好.
是否有可能做到这一点?如果不是,有人可以向我解释getJSON如何工作以及为什么我不能做出替代方案.
您不能使用XMLHttpRequest(aka AJAX)发出跨域请求(GET/POST /等).
当服务器支持它时,您可以做的是发出JSONP请求.JSONP请求的工作方式如下:
jQuery使用您提供的回调函数创建一个全局可访问的函数作为参数
而不是使用XMLHttpRequest(AJAX)来发出HTTP请求,jQuery动态地将SCRIPT标记插入到DOM中
脚本标记的SRC是您尝试与之通信的请求URL
jQuery向查询字符串添加一个回调参数,如下所示:example.com/someurl.js?callback=someDynamicallyGeneratedMethodName
然后由SERVER通过将JSON结果作为参数传递给someDynamicallyGeneratedMethodName来返回客户端可以使用的JavaScript
如果您无法控制要发布的服务器,那么您运气不好,JSONP对您没有太大帮助.无论服务器返回什么都将在SCRIPT标记中,并且如果格式不正确,很可能会抛出错误.
有关这方面的更多信息,我建议您查看基本的$ .ajax函数而不是快捷方式.(在Ajax下的jQuery文档中.抱歉,我无法发布更多链接)
同样,如果您无法控制要发布的服务器,则可能需要查看代理.否则,IFRAME可能是您唯一的其他选择.还有一种方法可以使用SWF(flash)对象来实现此目的.我既没有尝试过,但它们是XMLHttpRequest对象限制的解决方法.
希望我能帮忙!