【问题标题】:Jquery ajax: Invalid labelJquery ajax:标签无效
【发布时间】:2011-08-10 10:33:21
【问题描述】:

我的代码:

$.ajax({
        url: 'http://tinysong.com/b/Beethoven?format=json&key=<my key..>',
        dataType: 'jsonp',
        success: function(response) {
            console.log(response);
        }
    });

Firebug 说“标签无效”。但是当我在浏览器中访问 url 时,我看到:

{"Url":"http:\/\/tinysong.com\/7Wm7","SongID":8815585,"SongName":"Moonlight Sonata","ArtistID":1833,"ArtistName":"Beethoven","AlbumID":258724,"AlbumName":"Beethoven: Piano Sonatas"}

对我来说看起来像是一个正确的 json 字符串。我错过了什么吗?谢谢!

【问题讨论】:

  • 你能分享更多的周边代码吗?也许那里有什么问题。

标签: jquery ajax json


【解决方案1】:

那是 JSON。您在 dataType 中请求一个 JSONp 字符串,这需要将您的输出包装在一个函数中。

【讨论】:

  • 好的,既然它在另一个域上,我想它需要是 jsonp?
  • 是的,这意味着其他域必须支持构建 JSONp。
  • 好的,但是当我指定 json 作为格式时,这就是我得到的。有没有其他方法可以从我这边解决这个问题,还是他们必须为我提供一个 jsonp-object 来代替?
  • 要么他们必须为您提供 JSONp 对象,要么您必须在与您的主服务器相同的服务器上创建一个网桥。然后,服务器获取 JSON,并将其简单地包装在 JSONp 函数中。这需要对可执行服务器代码具有某种程度的访问权限,无论是 PHP、JSP、C# 还是您可能正在使用的任何其他代码。这在 PHP 中非常简单:&lt;?php echo $_REQUEST['jsoncallback'].'('.file_get_contents('http://server/data.json').')'; ?&gt; 这太简单了,我喜欢使用序列号和其他 goo 来处理这类事情,但这只是说明性的。
  • 谢谢约翰,我猜我得在服务器端做
【解决方案2】:

试试:

$.getJSON('http://tinysong.com/b/Beethoven?format=json&key=<my key..>&callback=?', function(data){
    console.log(data);
});

【讨论】:

    【解决方案3】:

    一种可能的解决方案是here。但是,如果您正在执行来自同一域的请求,则不必使用 jsonp,因此您可以将 dataType: 'jsonp', 替换为 dataType: 'json',

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      相关资源
      最近更新 更多