我的JavaScript应该通过Web API(在Azure上)返回JSON,这有什么问题吗
我是JavaScript/Jquery的新手,在我的第一个“真实世界”应用程序中遇到了问题。对于这个应用程序,我需要使用Web API从我的Azure网站下载JSON。这是我的代码:我的JavaScript应该通过Web API(在Azure上)返回JSON,这有什么问题吗,javascript,jquery,asp.net-web-api,Javascript,Jquery,Asp.net Web Api,我是JavaScript/Jquery的新手,在我的第一个“真实世界”应用程序中遇到了问题。对于这个应用程序,我需要使用Web API从我的Azure网站下载JSON。这是我的代码: function returnClientJSON() { var value = "novi"; var valueType = "city"; //$.getJSON("http://myazuresite.azurewebsites.net/api/location/?q="
function returnClientJSON() {
var value = "novi";
var valueType = "city";
//$.getJSON("http://myazuresite.azurewebsites.net/api/location/?q=" + valueType & "&v=" + value,
$.getJSON("http://myazuresite.azurewebsites.net/api/location/?q=city&v=novi",
function (data) {
$.each(data, function (key, val) {
var str = val.Name + ': ' + val.City;
$('<li/>', { text: str })
.appendTo($('#clients'));
});
});
}
函数returnClientJSON(){
var value=“novi”;
var valueType=“城市”;
//$.getJSON(“http://myazuresite.azurewebsites.net/api/location/?q=“+valueType&”&v=“+value,
$.getJSON(“http://myazuresite.azurewebsites.net/api/location/?q=city&v=novi",
功能(数据){
$。每个(数据、函数(键、值){
var str=val.Name+':'+val.City;
$('',{text:str})
.appendTo($(“#客户”);
});
});
}
我知道这个API是有效的,因为我可以通过直接访问URL获得结果。而对于Firebug(我使用它的经验有限,所以可能会遗漏一些东西)我可以看出服务器没有返回任何结果或错误,这些结果或错误会给我错误的提示。我还通过谷歌知道,这可能是CORS的问题,我对此一无所知
因此,我将进一步调查CORS,但我想问一下,我上面的代码是否有任何明显的错误?事实证明,我遇到的问题是由跨域引起的,我发现了这篇文章,“”由Carlos Figueira编写。我下载了示例代码,将附带的CorsHandler添加到我的项目中,将处理程序添加到Global.asax中,它就开始工作了。如果您是从不同的域发出请求,而不是从您请求的资源发出请求,则需要使用JSONP。这将要求您配置web API端点以支持JSONP客户端是一种电话间隙类型的应用程序(Icenium)所以它来自不同的域。我确实找到了一些关于JSONP的信息,但我认为它说我不能用它发回,使用CORS是更好的选择。那么我的JS看起来还好吗?或者你是说你100%确定我的问题是跨域问题?你确定服务器返回了你期望的JSON吗?还有什么它看起来像吗?当我点击:,我被重定向到,所以我猜在这个url返回JSON之前你需要某种身份验证,因此它不是适合getJSON的RESTful端点。不需要身份验证。我只是匿名了实际的站点,因为我还不想公开数据。我需要在返回之前清理一些内容我将数据公开。我原以为它是有效的JSON,但现在我不太确定。Fiddler说“响应不包含有效的JSON文本”,因此我将再次集中精力。谢谢。