Позвольте мне объяснить, почему мне нужно это сделать!
Мне нужно отправить запрос на другой сервер, чтобы его формат был примерно таким:
http://www.test.ccom/process?item=1AAA&item=2BBB&item=3CCC
Этот URL добавит 3 разных элемента (по одному на каждый)на страницу результатов, например:
Item = 1AAA Count=1
Item = 2BBB Count=1
Item = 3CCC Count=1
Если я хочу добавить только 3 из одного элемента, я должен использовать это:
http://www.test.ccom/process?item=1AAA&item=1AAA&item=1AAA
ИСтраница результатов будет выглядеть так:
Item = 1AAA Count=3
Моя проблема в том, что я не могу отправить свой запрос методом GET (потому что мы хотим добавить более 100 на элемент, и это вызовет "Request-URI TooБольшая «ошибка»
Я использовал два разных метода для отправки этого запроса POST, но безуспешно.
Сначала я использовал эту функцию:
function post_by_form(path, params) {
// The rest of this code assumes you are not using a library.
// It can be made less wordy if you use one.
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", path);
form.setAttribute("style", "display: none")
for(var key in params) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "item");
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();
}
Это работает, когдаЯ тестировал его с разными именами переменных (name = "item" + key), но он не работает, когда я использую одно имя переменной для всех входных данных.
Затем я использовал эту функцию для отправки запроса POSTпо ajax:
function post_by_ajax(path, params_arr){
var http = new XMLHttpRequest();
var url = path;
var params = "";
for(var key in params_arr) {
if (params != "")
params += "&item="+params_arr[key];
else
params += "item="+params_arr[key];
}
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
}
Одинаковый результат, оба эти метода вернут только одно количество только для одного элемента (последний) ... Хотя мы можем отправить форму с множеством полей ввода с одинаковыми именами, почему я не могу сделать это с помощью этих методов ?!Есть ли у меня проблемы с логикой ?!Может кто-нибудь, пожалуйста, помогите мне?!