从 Iron-Ajax 调用中检索结果

Retrieving results from Iron-Ajax call

我开始使用 Polymer,尤其是 iron-ajax,用于从 ASP.Net WebAPI 服务检索 JSON 数据。我可以调用该服务,但是我无法获得该服务返回的结果。

这是我的铁-ajax元素:

    <iron-ajax auto
               url="http://local.webapi2.com/api/values"
               headers='{ "Key": "d72ad080-e3dd-43ea-ba95-0cd2a5a58bb1" }'
               handle-as="json"
               content-type="application/json"
               method='GET'
               verbose="true"
               on-response="handleResponse"></iron-ajax>

这是我的 handleResponse 函数:

    handleResponse: function (jsonFromServer)
    {
        console.log('response from server:', jsonFromServer);
    }

这是我的 WebAPI 端点:

[RoutePrefix("api/values")]
public class ValuesController : ApiController
{
    // GET api/values
    [Route("")]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2", "value3", "value4", "value5", "value6" };
    }
}

我使用的是 Firefox 浏览器。使用 Firebug 的网络选项卡,我可以看到对 http://local.webapi2.com/api/values 的调用,我可以看到返回的结果:

["value1","value2","value3","value4","value5","value6"]

然而,在Firebug的控制台中,我只看到了这个:

response from server: response 

其中 'response' 是一个对象,似乎是关于 'iron-ajax' 元素本身的详细信息。预期结果数据永远不会显示在控制台中。此外,控制台中 WebAPI 调用的 Response 选项卡的值为 null。控制台中 WebAPI 调用下的详细信息中甚至没有 JSON 选项卡。

我不确定为什么“网络”选项卡具有您所期望的完整和准确的结果,但“控制台”选项卡无效并且我看到一个 'response' 对象。

我在 Chrome 也遇到了同样的情况。

我错过了什么?是配置问题吗?谢谢你的时间。

我实际上也在使用 ASP.NET Web API,但没有遇到过这个问题。

问题可能出在这一行 -

handleResponse: function (jsonFromServer)
{
    console.log('response from server:', jsonFromServer);
}

参数不是直接的 return 值,而是整个 事件对象 。所以也许试试 -

handleResponse: function (e)
{
    console.log('response from server:', e.detail.response); // or e.detail.xhr.repsone
}