Используя jQuery, как я могу прикрепить массив строк в качестве параметра http к запросу http? - PullRequest
0 голосов
/ 01 июня 2010

У меня есть пружинный контроллер с отображением запроса следующим образом

@RequestMapping("/downloadSelected")
public void downloadSelected(@RequestParam String[] ids) {
    // retrieve the file and write it to the http response outputstream
}

У меня есть html таблица объектов, в которой для каждой строки есть флажок с идентификатором объекта в качестве значения. Когда они отправляют, у меня есть обратный вызов jQuery для сериализации всех идентификаторов. Я хочу вставить эти идентификаторы в параметр запроса http, называемый «идентификаторы», чтобы их можно было легко получить.

Я подумал, что смогу сделать следующее

var ids = $("#downloadall").serializeArray();

Тогда мне нужно было бы взять каждый из идентификаторов и добавить их в параметр запроса, называемый идентификаторами. Но есть ли «стандартный» способ сделать это? Как использовать jQuery?

1 Ответ

2 голосов
/ 01 июня 2010

Я не знаю о "стандартном способе", но вот как бы я это сделал.

var ids = $("#downloadall").serializeArray();

предоставит вам набор данных в форме (представлены только проверенные элементы):

[{name:"foo1", value:"bar1"}, {name:"foo2", value:"bar2"}]

Чтобы передать это .ajax () jQuery просто:

$.ajax({
  url: <your url>,
  data: ids.map(function (i) {return i.name+'='+i.value;}).join('&')
});

Array.map () пока не совместим со всеми браузерами, поэтому вам лучше иметь этот код и на своей странице:

if (!Array.prototype.map) {
  Array.prototype.map = function(fun /*, thisp*/) {
    var len = this.length >>> 0;
    if (typeof fun != "function")
      throw new TypeError();

    var res = new Array(len);
    var thisp = arguments[1];
    for (var i = 0; i < len; i++) {
      if (i in this)
        res[i] = fun.call(thisp, this[i], i, this);
    }
    return res;
  };
}

Этот фрагмент кода я получил от центра разработчиков Mozilla .

Я не поместил их в параметр ?ids=..., но таким образом к ним легко получить доступ на стороне сервера. Вы всегда можете просто изменить функцию карты в соответствии со своими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...