【问题标题】:JQuery JSONP: One request multiple callbacksJQuery JSONP:一个请求多个回调
【发布时间】:2015-03-11 21:55:47
【问题描述】:

我的jsonp urlhttp://host/dummyJsonp?callback=myFunction的内容是:

myFunction("a");
myFunction("b");
myFunction("c");

但是当我运行这段代码时,JQuery 成功函数只被调用一次:

$.ajax({
    url: "http://host/dummyJsonp",
    jsonp: "myFunction",
    dataType: "jsonp",
    success: function( response ) {
        console.log( response ); // server response
    }
});

JQuery 是否支持一个请求中的多个回调?

【问题讨论】:

  • 您能详细说明一下吗?我不确切知道你的问题是什么。如果你使用 Deferred 对象,你可以注册多个回调,但不知何故,我认为这不是你想知道的。
  • 我预计成功应该被调用3次,其中参数响应是“a”,“b”,然后是“c”。
  • 那样的话,不,不可能

标签: javascript jquery jsonp


【解决方案1】:

不可能使用不同的参数多次调用回调。由于 ajax 调用只发生一次,因此只有一个响应。这意味着您不能使用不同的参数调用多个回调。

如果您希望响应不同,则必须进行 3 次 ajax 调用,每次服务器必须给您不同的响应。

实现所需结果的最简单解决方法是将所有响应放在服务器端的 json 对象中,如下所示:

{
a:'a',
b:'b',
c:'c'
}

在你的成功函数中,你只需使用你需要的结果:

success: function( response ) {
    console.log( response.a ); // server response
    console.log( response.b ); // server response
    console.log( response.c ); // server response
}

【讨论】:

  • 嗨@itd。将有成千上万的复杂对象。我想一一处理并丢弃。我认为制作单个大对象会导致内存泄漏。
  • 一个 AJAX 请求只能返回一个响应,因此您的选择是将所有对象放入一个大响应对象中,或者使用多个 AJAX 请求并且每次请求下一组数据。如果会有数千个复杂对象,我建议使用第二种选择。
猜你喜欢
  • 2011-12-15
  • 2013-12-07
  • 2012-05-04
  • 2017-12-30
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多