Winjs获取请求无法返回数据

时间:2013-08-29 10:17:18

标签: ajax windows-8 winjs windows-store

我遇到了一个奇怪的问题。在我的应用程序中,我有以下代码

WinJS.xhr({
                url: 'http://bdzservice.apphb.com/api/Route?fromStation=София&toStation=Варна&date=30/08/2013&startTime=00:00&endTime=24:00'

            }).then(function (success)
            {
                console.log(success);
            },
            function (error)
            {
                console.log(error);
            }
            );

问题是我得到一个空的响应文本(状态为200)。我提供的Url通过浏览器和其他其他客户端返回数据,但在应用程序中我没有数据。哪里可能是问题?

1 个答案:

答案 0 :(得分:1)

您需要通过encodeURIComponent对查询字符串参数进行编码(浏览器在粘贴网址时会自动为您执行此操作)。

以下代码可以解决问题:

function serialize (obj) {
var str = [];
for (var p in obj) {
    if (obj.hasOwnProperty(p)) {
         str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
     }
 }

 return str.join("&");
};

var request = {
    fromStation: 'София',
    toStation: 'Варна',
    date: '30/08/2013',
    startTime: '00:00',
    endTime: '24:00'
};
WinJS.xhr({
    url: 'http://bdzservice.apphb.com/api/Route?' + serialize(request)
}).then(function(success) {
    console.log(success);
},
    function(error) {
        console.log(error);
    }
);