0

我正在按照本教程在 Web 表单网站中构建我的第一个 Asp.net Web API,但我遇到了一个问题。我创建了两个项目:

  1. 用于定义 Web 服务的 宿主项目
  2. 使用 Web 服务的客户端项目。

现在我的问题是,如果我使用 web 浏览器导航到我的 web api URL,http://localhost:39930/api/products/那么这将完美运行,并且根据浏览器返回 XML 或 Json 数据。

但是,如果我在客户端网站中使用 Web 服务 URL,则不会返回任何内容!

以下是我从客户端网站调用 Web 服务的方式:

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Price</th>
        </tr>
    </thead>
    <tbody id="products">
    </tbody>
</table>

 <script type="text/javascript">
     function getProducts() {
         $.getJSON("http://localhost:39930/api/products",
             function (data) {
                 $('#products').empty(); // Clear the table body.

                 // Loop through the list of products.
                 $.each(data, function (key, val) {
                     // Add a table row for the product.
                     var row = '<td>' + val.Name + '</td><td>' + val.Price + '</td>';
                     $('<tr/>', { text: row })  // Append the name.
                         .appendTo($('#products'));
                 });
             });
     }

     $(document).ready(getProducts);
</script>

这是萤火虫中请求的快照:

在此处输入图像描述

请注意,响应为空。

那么,我在这里做错了吗?是否应该添加一些配置以允许远程调用服务?

提前致谢。

4

1 回答 1

1

这是因为您的宿主项目和客户端项目在不同的端口上运行,这违反了同源策略并被禁止。在此处查看详细信息http://en.wikipedia.org/wiki/Same_origin_policy

如果你想让它工作,你可以使用 jsonp 而不是 json。看看这篇文章http://www.jquery4u.com/json/jsonp-examples/#.UISVao3iYsc

于 2012-10-22T00:36:58.573 回答