1

我正在创建 Windows Phone 8 HTML 5 应用程序。我试图通过 ajax 发布获取天气信息。但我没有得到任何回应。我无法追踪其背后的问题。

$(document).ready(function () {

        var apiUrl = "http://api.worldweatheronline.com/free/v1/weather.ashx?q=London&format=json&num_of_days=5&key=KEY GOES HERE";

        //CALL BACK FUNCTION

        function mapWeather() {
            $("#contentPanel").text("111");
            $.ajax({
                url: apiUrl,
                type: 'GET',
                success: function (data) {
                    $("#contentPanel").text("adfdf");
                }
            });
        }
});

HTML

    <div id="row-fluid">
        <div class="input-append">
            <input type="text" id="searchCity" />
            <button type="button" id="addCity" unselectable="on" class="btn btn-primary" onclick="mapWeather()">+</button>
        </div>
<div id="contentPanel">
        testing
    </div>
    </div>
4

2 回答 2

1

原因 :

is not allowed by Access-Control-Allow-Origin.

您正在尝试做 AJAX 跨域。

编辑

示例 a,在 php 中,proxy.php :

<?
$url=$_SERVER['QUERY_STRING'];
$from=strpos($url, 'url=')+4;
$url=substr($url, $from);
echo utf8_decode(file_get_contents($url));
?>

然后你把ajax称为

var apiUrl = "proxy.php?url=http://api.worldweatheronline.com/free/v1/weather.ashx?q=London&format=json&num_of_days=YOURKEY";
于 2013-05-11T09:38:22.043 回答
0

我在上面的评论中提到的原因callback=?是因为weatheronline.com支持 JSONP,它确实支持跨域请求。

这适用于我的 PC 浏览器。我没有 Windows 8 手机,因此无法测试:

var apiUrl = "http://api.worldweatheronline.com/free/v1/weather.ashx?q=London&format=json&num_of_days=5&key=KEY HERE&callback=?";

$("#addCity").click(function () {
   mapWeather(); 
});

//CALL BACK FUNCTION
function mapWeather() {
    $("#contentPanel").text("111");
    $.ajax({
        url: apiUrl,
        type: 'GET',
        dataType: 'jsonp',
        success: function (data) {
            $("#contentPanel").text(JSON.stringify(data));
        }
    });
}
于 2013-05-11T10:48:51.057 回答