Каждый объект java-script реализован в виде словаря - все свойства являются парами имя-значение.Таким образом, чтобы передать словарь в функцию post_to_url
, вы можете использовать
var postdata = {};
postdata["name1"] = value1;
postdata["name2"] = value2;
...
post_to_url(url, postdata, "post"
Обратите внимание, что синтаксис postdata["name1"]
и postdata.name1
эквивалентны - они ссылаются на одно и то же значение.Вы также можете использовать альтернативный синтаксис, используя обозначение объекта JS.Например,
var postdata = {
"name1" = value1,
"name2" = value2,
...
"namex" = valuex
};
post_to_url(url, postdata, "post"
Теперь, чтобы ответить на другую часть вашего вопроса - зрячая функция JS будет публиковать только данные из параметров.Он не будет создавать URL, такой как productId=126504&productId=126505
для метода GET.Для этого вам нужно свернуть собственную версию, такую как
function post_to_url(path, params, method) {
method = method || "post"; // Set method to post by default, if not specified.
// 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", method);
form.setAttribute("action", path);
for(var key in params) {
if (method.toUpperCase() === "GET") {
if(path.indexOf("?") < 0) {
path += "?";
}
path += "&" + key + "=" + params["key"];
}
else {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form); // Not entirely sure if this is necessary
form.submit();
}