我正在尝试从“远程”网站获取一些json数据。我在99000端口上运行Web服务,然后在99001端口上启动网站(http:// localhost:99001 / index.html)。
我收到以下消息:
XMLHttpRequest cannot load http://localhost:99000/Services.svc/ReturnPersons. Origin http://localhost:99001 is not allowed by Access-Control-Allow-Origin.
即使以HTML文件启动网页,我也会得到以下信息:
XMLHttpRequest cannot load http://localhost:99000/Services.svc/ReturnPersons.Origin null is not allowed by Access-Control-Allow-Origin.
Web服务返回数据。我尝试捕获这样的数据项:
var url = "http://localhost:99000/Services.svc/ReturnPersons"; $.getJSON(url, function (data) { success: readData(data) }); function readData(data) { alert(data[0].FirstName); }
我正在尝试获得以下结构:
[{"FirstName":"Foo","LastName":"Bar"},{"Hello":"Foo","LastName":"World"}]
您知道我为什么会收到此错误吗?
您无法执行XMLHttpRequest跨域,唯一的“选项”将是称为JSONP的技术,其含义如下:
要开始请求,请执行以下操作:<script>使用远程URL 添加一个新标记,然后确保该远程URL返回一个有效的JavaScript文件,该文件会调用您的回调函数。某些服务支持此功能(并让您在GET参数中命名回调)。
<script>
另一种简单的方法是在本地服务器上创建一个“代理”,该代理将获取远程请求,然后将其“转发”回您的javascript。
编辑/添加:
通过检查URL是否包含“ callback =?”,我看到jQuery具有对JSONP的内置支持。(其中jQuery将用实际的回调方法替换?)。但是您仍然需要在远程服务器上进行处理以生成有效的响应。