0

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

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)。我提供的网址通过浏览器和其他休息客户端返回数据,但在应用程序中我没有得到任何数据。问题可能出在哪里?

4

1 回答 1

1

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

以下代码可以解决问题:

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);
    }
);
于 2013-08-29T10:37:54.540 回答