我的JavaScript应该通过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="

我是JavaScript/Jquery的新手,在我的第一个“真实世界”应用程序中遇到了问题。对于这个应用程序,我需要使用Web API从我的Azure网站下载JSON。这是我的代码:

    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文本”,因此我将再次集中精力。谢谢。