“无效标签”当使用 jQuery 和 jsonp 调用 jsonip.com 时

发布于 2024-12-27 06:05:38 字数 594 浏览 1 评论 0原文

我快要疯了...执行这段简单的 Javascript 时,Firebug 中不断出现“无效标签”错误:

$(document).ready(function(){
  $.ajax({
    url: "http://jsonip.com",
    dataType: "jsonp",
    success: function(data) {
      alert("success!")
    }
  });
});

Firebug 会说(在控制台选项卡中):

Invalid label
{"ip":"99.99.99.99"}

带有指向第一个双引号的指针(模拟的 IP 地址)出于明显的原因)。

net 选项卡中的调用符合预期:http://jsonip.com/?callback=jQuery17108684927028894522_1326752040735&_=1326752042159,因此回调参数也已就位。

我正在使用 jQuery 1.7.1。我也用 jQuery 1.6.4 尝试过,但没有成功。

有人...?谢谢!

I'm going absolutely crazy... I keep getting an "invalid label" error in Firebug when executing this simple piece of Javascript:

$(document).ready(function(){
  $.ajax({
    url: "http://jsonip.com",
    dataType: "jsonp",
    success: function(data) {
      alert("success!")
    }
  });
});

Firebug will say (in the console tab):

Invalid label
{"ip":"99.99.99.99"}

with a pointer to the first double quotes (IP address mocked for obvious reasons).

The call in in the net tab is what one would expect: http://jsonip.com/?callback=jQuery17108684927028894522_1326752040735&_=1326752042159, so the callback parameter is in place too.

I'm using jQuery 1.7.1. I have also tried this with jQuery 1.6.4 but without success.

Anyone...? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

动听の歌 2025-01-03 06:05:38

要指定 jsonip.com 的 JSONP 回调,您必须像这样输入回调名称:

http://jsonip.com/{theCallback}

要使用 jQuery 执行此操作,需要对 ajax 方法进行一些简单的配置。该代码对我有用:

$(document).ready(function() {
    $.ajax({
        url: "http://jsonip.com/theCallbackFunction",
        dataType: "jsonp",
        jsonp: false,
        jsonpCallback: "theCallbackFunction",

        success: function(data) {
            alert(data.ip);
        }
    });
});

问候!

To specify a JSONP callback to jsonip.com you must to put the callback name like this:

http://jsonip.com/{theCallback}

To do this with jQuery, there are some simple configurations to the ajax method. This code works for me:

$(document).ready(function() {
    $.ajax({
        url: "http://jsonip.com/theCallbackFunction",
        dataType: "jsonp",
        jsonp: false,
        jsonpCallback: "theCallbackFunction",

        success: function(data) {
            alert(data.ip);
        }
    });
});

Regards!

全部不再 2025-01-03 06:05:38

回调函数似乎是作为 url 片段传递的。检查 小提琴

The callback function seems to be passed as a url fragment. Check the fiddle

扭转时空 2025-01-03 06:05:38

关于 eagleoneraptor 的回答和 lonesomeday 的评论:

您可以动态为回调函数创建一个动态名称,并将该名称附加到 url 中:

$.ajax({
    url: "http://jsonip.com/",
    dataType: "jsonp",
    jsonpCallback:function(){var fnc='cb'+$.now();this.url+=fnc;return fnc;},
    jsonp:false,
    success: function(data) {
      alert(data.ip)
    }
  });

http://jsfiddle.net/doktormolle/YfHYs/

Regarding to the answer by eagleoneraptor and the comment by lonesomeday:

You may create a dynamic name for the callback-function on the fly and append that name to the url:

$.ajax({
    url: "http://jsonip.com/",
    dataType: "jsonp",
    jsonpCallback:function(){var fnc='cb'+$.now();this.url+=fnc;return fnc;},
    jsonp:false,
    success: function(data) {
      alert(data.ip)
    }
  });

http://jsfiddle.net/doktormolle/YfHYs/

好菇凉咱不稀罕他 2025-01-03 06:05:38

我运行 jsonip.com。

该服务现在支持:

  1. CORS
  2. 路径回调,http://jsonip.com/myfunc => myfunc({"ip":""})
  3. 参数回调, http://jsonip.com/?callback=myfunc => myfunc({"ip":""})

请注意,对于参数回调,需要 ?callback。当然,“myfunc”可以是您想要的任何内容。

有关详细信息,请参阅 http://jsonip.com/about

I run jsonip.com.

The service now supports:

  1. CORS
  2. path callbacks, http://jsonip.com/myfunc => myfunc({"ip":""})
  3. parameter callbacks, http://jsonip.com/?callback=myfunc => myfunc({"ip":""})

Note that for the parameter callbacks, ?callback is required. "myfunc" can, of course, be whatever you want.

See http://jsonip.com/about for details.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文