2

我想从 iheartquotes 获取报价,并在页面加载时将其添加到 div 中。我目前有此代码,但不知道为什么它不起作用

    <script type="text/javascript">
    $(document).ready(function() {
        $.getJSON('http://iheartquotes.com/api/v1/random?format=json&callback=?', function(data) {
            $(".content").html(json.quote);
        });
    });
    </script>

和正文中的 HTML

<div class="content">
This will be replaced with a quote
</div>
4

2 回答 2

2

该 URL 返回 JSON,而不是 JSON-P,因此您无法在浏览器中使用 JS 跨域读取它。

您可以改为在服务器端执行此操作,或者找到可以将其转换为 JSON-P(可能是 YQL)的第三方代理。

于 2011-07-11T12:24:45.803 回答
0

是的,我也同意@Quentin。这在客户端是不可能的,因为由于同源策略,您正在尝试访问另一个域。

因此,您可以从 javascript 调用aspx 页面(使用页面方法)中的web服务/静态 web 方法,并在服务器端执行此操作并在客户端本身取回结果,您可以在其中执行此跨域操作。

以下代码可以帮助您在服务器端执行此操作,

您可以为此使用WebClient

     using (var client = new WebClient())
     {
      // Define data to be posted
        var values = new NameValueCollection
        {
            { "key1", "value1" },
            { "key2", "value2" },
        };

        // Send the POST request
         byte[] result = client.UploadValues("http://foo.com", values);

        // This will contain the cookie being set
        string cookie = client.ResponseHeaders[HttpResponseHeader.SetCookie];
    }  

希望这可以帮助...

于 2011-07-11T12:45:46.310 回答