Javascript 如何获取每个元素都作为键传递给post表单的对象?
我需要使用javascript动态创建一个表单,以支持一些遗留浏览器。我需要通过表单发送的数据当前位于对象中,例如:Javascript 如何获取每个元素都作为键传递给post表单的对象?,javascript,forms,Javascript,Forms,我需要使用javascript动态创建一个表单,以支持一些遗留浏览器。我需要通过表单发送的数据当前位于对象中,例如: var data = { name: 'John Doe', age: 35 }; var myForm = document.createElement("form"); myForm.setAttribute("action", myPostActionPath); myForm.setAttribute("method", "post"); // Append data
var data = { name: 'John Doe', age: 35 };
var myForm = document.createElement("form");
myForm.setAttribute("action", myPostActionPath);
myForm.setAttribute("method", "post");
// Append data to the form somehow.
myForm.submit();
我觉得这应该是一件简单的事情,但我肯定错过了一些显而易见的事情。我想要的是有一些东西将表单数据作为每个数据属性的键传递,比如上面的例子中的“name=John%20Doe&age=35”。我想这样做,而不必做以下事情:
var data = { name: 'John Doe', age: 35 };
var myForm = document.createElement("form");
myForm.setAttribute("action", myPostActionPath);
myForm.setAttribute("method", "post");
// NOT what I would like:
var formField1 = document.createElement("input");
formField1.setAttribute("type", "hidden");
formField1.setAttribute("name", "name");
formField1.setAttribute("value", data.name);
myForm.appendChild(formField1);
var formField2 = document.createElement("input");
formField2.setAttribute("type", "hidden");
formField2.setAttribute("name", "age");
formField2.setAttribute("value", data.age);
myForm.appendChild(formField2);
myForm.submit();
那么,是否有任何方法可以通过这种方式附加我的数据,而不必循环数据的属性,将每个属性添加为隐藏字段
另外,请注意,我的数据属性可能是对象或数组本身
更新
这是我当前的解决方案,但我一直在寻找一种更直接的方法来传递数据,而不必遍历数据对象,但从这里的所有答案来看,似乎没有其他方法:
var data = { name: 'John Doe', age: 35 };
var myForm = document.createElement("form");
myForm.setAttribute("action", myPostActionPath);
myForm.setAttribute("method", "post");
$.each(data, function(name, value) {
var formInput = document.createElement("input");
formInput.setAttribute("type", "hidden");
formInput.setAttribute("name", name);
formInput.setAttribute("value", value);
myForm.appendChild(formInput);
});
myForm.submit();
为了更好地解释一下,在将一些数据发送回控制器后,我使用此操作下载文件,IE8和IE9不允许通过AJAX post下载文件,因此这是一种回退,允许我下载文件,而无需提交原始表单,这将导致不希望的整页刷新。
json.stringify
在输入中隐藏?然后,您可以在服务器端解码json并获得所需的一切
这里有一个类似的例子,它不是专门回答你的问题,而是使用你的技巧
请参阅javascript部分。在隐藏的输入中如何处理
json.stringify
?然后,您可以在服务器端解码json并获得所需的一切
这里有一个类似的例子,它不是专门回答你的问题,而是使用你的技巧
请参阅javascript部分。在隐藏的输入中如何处理
json.stringify
?然后,您可以在服务器端解码json并获得所需的一切
这里有一个类似的例子,它不是专门回答你的问题,而是使用你的技巧
请参阅javascript部分。在隐藏的输入中如何处理
json.stringify
?然后,您可以在服务器端解码json并获得所需的一切
这里有一个类似的例子,它不是专门回答你的问题,而是使用你的技巧
请参阅javascript部分
那么,是否有任何方法可以通过这种方式附加我的数据,而不必循环数据的属性,将每个属性添加为隐藏字段
不幸的是,没有:
那么,是否有任何方法可以通过这种方式附加我的数据,而不必循环数据的属性,将每个属性添加为隐藏字段
不幸的是,没有:
那么,是否有任何方法可以通过这种方式附加我的数据,而不必循环数据的属性,将每个属性添加为隐藏字段
不幸的是,没有:
那么,是否有任何方法可以通过这种方式附加我的数据,而不必循环数据的属性,将每个属性添加为隐藏字段
不幸的是,没有:。第二次尝试怎么样
//假设您可以为纯javascript修改jquery,我只是太懒了,我不想帮您完成任务:P
var data = { name: 'John Doe', age: 35 }
var arrTemplate = [];
arrTemplate.push("<form id='whateverID' action='' method=''");
for (var k in data){
if (data.hasOwnProperty(k)) {
arrTemplate.push("<input type='hidden' name='"+ k +"' value='"+ data[k] +"'>");
}
}
arrTemplate.push("</form>");
$(document).append(arrTemplate.join(""));
$("#whateverID").submit();
//then you could remove the form if you want to.
var data={name:'johndoe',年龄:35}
var-arrmetplate=[];
arrTemplate.push(“第二次尝试怎么样
//假设您可以为纯javascript修改jquery,我只是太懒了,我不想帮您完成任务:P
var data = { name: 'John Doe', age: 35 }
var arrTemplate = [];
arrTemplate.push("<form id='whateverID' action='' method=''");
for (var k in data){
if (data.hasOwnProperty(k)) {
arrTemplate.push("<input type='hidden' name='"+ k +"' value='"+ data[k] +"'>");
}
}
arrTemplate.push("</form>");
$(document).append(arrTemplate.join(""));
$("#whateverID").submit();
//then you could remove the form if you want to.
var data={name:'johndoe',年龄:35}
var-arrmetplate=[];
arrTemplate.push(“第二次尝试怎么样
//假设您可以为纯javascript修改jquery,我只是太懒了,我不想帮您完成任务:P
var data = { name: 'John Doe', age: 35 }
var arrTemplate = [];
arrTemplate.push("<form id='whateverID' action='' method=''");
for (var k in data){
if (data.hasOwnProperty(k)) {
arrTemplate.push("<input type='hidden' name='"+ k +"' value='"+ data[k] +"'>");
}
}
arrTemplate.push("</form>");
$(document).append(arrTemplate.join(""));
$("#whateverID").submit();
//then you could remove the form if you want to.
var data={name:'johndoe',年龄:35}
var-arrmetplate=[];
arrTemplate.push(“第二次尝试怎么样
//假设您可以为纯javascript修改jquery,我只是太懒了,我不想帮您完成任务:P
var data = { name: 'John Doe', age: 35 }
var arrTemplate = [];
arrTemplate.push("<form id='whateverID' action='' method=''");
for (var k in data){
if (data.hasOwnProperty(k)) {
arrTemplate.push("<input type='hidden' name='"+ k +"' value='"+ data[k] +"'>");
}
}
arrTemplate.push("</form>");
$(document).append(arrTemplate.join(""));
$("#whateverID").submit();
//then you could remove the form if you want to.
var data={name:'johndoe',年龄:35}
var-arrmetplate=[];
arrmetplate.push(“仅供参考,这是一个JavaScript对象,不是JSON。JSON是一种文本的、独立于语言的数据格式。是的,Felix。我的对象实际上是JSON,这只是为了简化示例。数据从哪里来并不重要。顺便说一句,为什么你不能发出Ajax请求?我不能使用Ajax,因为post会发回一个要下载的文件和IE8nd IE9不允许通过AJAX post下载文件。仅供参考,这是一个JavaScript对象,而不是JSON。JSON是一种文本、独立于语言的数据格式。是的,Felix。我的对象实际上是JSON,这只是为了简化示例。数据来自何处并不重要。顺便说一句,为什么你不能发出AJAX请求?我不能使用Ajax因为post发回一个要下载的文件,IE8和IE9不允许通过AJAX post.FYI下载文件,这是一个JavaScript对象,不是JSON。JSON是一种文本的、独立于语言的数据格式。是的,Felix。我的对象实际上是JSON,这只是为了简化示例。数据在哪里并不重要来自。顺便说一句,你为什么不能发出Ajax请求?我不能使用Ajax,因为post发回一个要下载的文件,IE8和IE9不允许通过Ajax post下载文件。仅供参考,这是一个JavaScript对象,而不是JSON。JSON是一种文本、独立于语言的数据格式。是的,Felix。我的对象实际上是JSON,也就是j只是为了简化这个例子。数据从哪里来并不重要。顺便说一句,为什么你不能发出一个Ajax请求?我不能使用Ajax,因为post发回一个要下载的文件,IE8和IE9不允许通过Ajax post下载文件。这个想法是根本不必更改服务器端,也不必让它知道是用例,它只适用于传统浏览器。为什么只需简单地迭代