【问题标题】:How to pass additional parameter to Ajax response while sending request [duplicate]发送请求时如何将附加参数传递给Ajax响应[重复]
【发布时间】:2016-01-04 21:40:27
【问题描述】:

我有一个 jquery 函数,它遍历一个数组并为每次迭代调用 servlet。如何确保每个 servlet 的响应都转到相应的 div 部分。 div id 是唯一的,对应数组中的 val。

JQuery:

function foo() {

  for (var p in obj) {

    var tagId = obj[p]["prop1"];

    $.get('CallServlet', {
      json: JSON.stringify(obj[p])
    }, function(response) {
      $("#" + tagId).append(response);
    });

  }
}

例子:

tagId= obj[0][val1];

我希望我的回复转到:

<div id="tagId"></div>

在我上面的函数中,当迭代器在对象中前进时,响应中 tagId 的值被覆盖。 当我收到obj[0] 的响应时,tagId 会更新为obj[1][val1]

【问题讨论】:

  • 您在循环内执行 ajax,当响应返回函数采用 tagId 的最后一个值时,您需要查看我使用 IIEF 函数提供给您的解决方案

标签: javascript jquery ajax servlets


【解决方案1】:

你需要用 IIFE 的函数来包装它

function foo() {

  for (var p in obj) {

    var tagId = obj[p]["prop1"];
    (function(id) {
      $.get('CallServlet', {
        json: JSON.stringify(obj[p])
      }, function(response) {
        printFunc(responseText, id);
      });
    })(tagId)

  }
}

【讨论】:

    【解决方案2】:

    因为您在循环中发送 ajax 调用,所以您可以在回调中使用循环变量进行 ajax 调用。

    function(response){
        $("#"+tagId).append(response);
    }
    

    这将为循环的每次迭代生成一个不同的回调函数。

    【讨论】:

    • 我已经在使用循环变量“tagId”。由于迭代器在响应之前递增,所以在收到响应之前将 tagID 更新为下一个值。
    • 我认为他是在说,(因为“闭包”),tagId 在您的函数中可用,而无需将其作为参数传递。
    猜你喜欢
    • 2012-02-12
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 1970-01-01
    相关资源
    最近更新 更多