Javascript html表单数组到JSON
我有一个包含多个值的动态html表单,我需要的是将表单数据添加到JSON并将其发布到php页面以插入mysql 表格:Javascript html表单数组到JSON,javascript,arrays,json,Javascript,Arrays,Json,我有一个包含多个值的动态html表单,我需要的是将表单数据添加到JSON并将其发布到php页面以插入mysql 表格: First尝试创建JS数组,但无法确定如何在一个代码行中获取所有值,以及如何转换为json并发布到php: var elementai = document.getElementsByName('name[]'); for (var i = 0, j = elementai.length; i < j; i++) { var
First尝试创建JS数组,但无法确定如何在一个代码行中获取所有值,以及如何转换为json并发布到php:
var elementai = document.getElementsByName('name[]');
for (var i = 0, j = elementai.length; i < j; i++) {
var elementas = elementai[i];
alert(elementas.value);
}
var elementai=document.getElementsByName('name[]);
for(var i=0,j=elementai.length;i
下面的解决方案利用jQuery的功能,将准确达到所需结果所需的代码量降至最低
HTML:
<input type="text" name="name" id="p" />
<input type="text" name="manuf" id="k" size="3" /> <input type="text" name="item_pr" id="ka" size="10" />
<input type="text" name="price" id="su" size="10" disabled="disabled"/>
<br />
<input type="button" id="go" value="Go >>" onclick="createJSONObject()" />
function createJSONObject(){
var formValues = $('input[type=text]');
var obj = {};
$.map(formValues, function(n, i) {
obj[n.name] = $(n).val();
});
console.log(JSON.stringify(obj));
}
$.fn.extractObject = function() {
var accum = {};
function add(accum, namev, value) {
if (namev.length == 1)
accum[namev[0]] = value;
else {
if (accum[namev[0]] == null)
accum[namev[0]] = {};
add(accum[namev[0]], namev.slice(1), value);
}
};
this.find('input, textarea, select').each(function() {
add(accum, $(this).attr('name').split('.'), $(this).val());
});
return accum;
}
// ...
var object = $('#testformId').extractObject();
console.log(object);
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$(function() {
$('form').submit(function() {
$('#result').text(JSON.stringify($('form').serializeObject()));
return false;
});
});
var str_json = JSON.stringify(myObject) //gives me the JSON string.
// AJAX XMLHttpRequest object in Javascript to send data to the server:
request= new XMLHttpRequestObject()
request.open("POST", "Phppage.php")
request.setRequestHeader("Content-type", "application/json", true)
request.send(str_json)
演示:
上面的代码为
输入
元素创建一个jQuery对象,然后将每个元素的名称
属性和值
映射到对象变量。然后,它利用JSON.stringify(obj)
将对象格式化为一个可查看的上下文。好的,您可以使用jQuery,因为它易于使用,编写的代码更少。虽然我在这里给出了两种解决方案
在JavaScript中:
<input type="text" name="name" id="p" />
<input type="text" name="manuf" id="k" size="3" /> <input type="text" name="item_pr" id="ka" size="10" />
<input type="text" name="price" id="su" size="10" disabled="disabled"/>
<br />
<input type="button" id="go" value="Go >>" onclick="createJSONObject()" />
function createJSONObject(){
var formValues = $('input[type=text]');
var obj = {};
$.map(formValues, function(n, i) {
obj[n.name] = $(n).val();
});
console.log(JSON.stringify(obj));
}
$.fn.extractObject = function() {
var accum = {};
function add(accum, namev, value) {
if (namev.length == 1)
accum[namev[0]] = value;
else {
if (accum[namev[0]] == null)
accum[namev[0]] = {};
add(accum[namev[0]], namev.slice(1), value);
}
};
this.find('input, textarea, select').each(function() {
add(accum, $(this).attr('name').split('.'), $(this).val());
});
return accum;
}
// ...
var object = $('#testformId').extractObject();
console.log(object);
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$(function() {
$('form').submit(function() {
$('#result').text(JSON.stringify($('form').serializeObject()));
return false;
});
});
var str_json = JSON.stringify(myObject) //gives me the JSON string.
// AJAX XMLHttpRequest object in Javascript to send data to the server:
request= new XMLHttpRequestObject()
request.open("POST", "Phppage.php")
request.setRequestHeader("Content-type", "application/json", true)
request.send(str_json)
以下是:
在jQuery中:
<input type="text" name="name" id="p" />
<input type="text" name="manuf" id="k" size="3" /> <input type="text" name="item_pr" id="ka" size="10" />
<input type="text" name="price" id="su" size="10" disabled="disabled"/>
<br />
<input type="button" id="go" value="Go >>" onclick="createJSONObject()" />
function createJSONObject(){
var formValues = $('input[type=text]');
var obj = {};
$.map(formValues, function(n, i) {
obj[n.name] = $(n).val();
});
console.log(JSON.stringify(obj));
}
$.fn.extractObject = function() {
var accum = {};
function add(accum, namev, value) {
if (namev.length == 1)
accum[namev[0]] = value;
else {
if (accum[namev[0]] == null)
accum[namev[0]] = {};
add(accum[namev[0]], namev.slice(1), value);
}
};
this.find('input, textarea, select').each(function() {
add(accum, $(this).attr('name').split('.'), $(this).val());
});
return accum;
}
// ...
var object = $('#testformId').extractObject();
console.log(object);
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$(function() {
$('form').submit(function() {
$('#result').text(JSON.stringify($('form').serializeObject()));
return false;
});
});
var str_json = JSON.stringify(myObject) //gives me the JSON string.
// AJAX XMLHttpRequest object in Javascript to send data to the server:
request= new XMLHttpRequestObject()
request.open("POST", "Phppage.php")
request.setRequestHeader("Content-type", "application/json", true)
request.send(str_json)
(jQuery部分取自)
以下是:
用于通过javascript将数据发布到php:
<input type="text" name="name" id="p" />
<input type="text" name="manuf" id="k" size="3" /> <input type="text" name="item_pr" id="ka" size="10" />
<input type="text" name="price" id="su" size="10" disabled="disabled"/>
<br />
<input type="button" id="go" value="Go >>" onclick="createJSONObject()" />
function createJSONObject(){
var formValues = $('input[type=text]');
var obj = {};
$.map(formValues, function(n, i) {
obj[n.name] = $(n).val();
});
console.log(JSON.stringify(obj));
}
$.fn.extractObject = function() {
var accum = {};
function add(accum, namev, value) {
if (namev.length == 1)
accum[namev[0]] = value;
else {
if (accum[namev[0]] == null)
accum[namev[0]] = {};
add(accum[namev[0]], namev.slice(1), value);
}
};
this.find('input, textarea, select').each(function() {
add(accum, $(this).attr('name').split('.'), $(this).val());
});
return accum;
}
// ...
var object = $('#testformId').extractObject();
console.log(object);
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
$(function() {
$('form').submit(function() {
$('#result').text(JSON.stringify($('form').serializeObject()));
return false;
});
});
var str_json = JSON.stringify(myObject) //gives me the JSON string.
// AJAX XMLHttpRequest object in Javascript to send data to the server:
request= new XMLHttpRequestObject()
request.open("POST", "Phppage.php")
request.setRequestHeader("Content-type", "application/json", true)
request.send(str_json)
jQuery在这个问题上做得太过分了 证明: 纯JavaScript:
var input_ids = ['p','k','ka','su'];
for (var i = 0, j = input_ids.length; i < j; i++) {
var element = document.getElementById(input_ids[i]);
alert(element.value);
}
var输入_id=['p','k','ka','su'];
对于(变量i=0,j=input_id.length;i
如果您只想获得文本输入,并且知道表单的id:
var inputs = document.getElementById('myForm').getElementsByTagName('input');
var params = {};
for(var i=0; i < inputs.length; i++){
var curr = inputs[i];
if(curr.getAttribute('type')==='text')){
params[curr.getAttribute('name')] = curr.value;
}
}
或者直接使用javascript:
我曾经因为提供了一个未经要求的jQuery解决方案而受到打击。考虑到这一点,检查一下。为什么要使用JSON?应用程序/x-www-form-urlencoded数据有什么问题?特别是因为您已经在使用命名约定,允许PHP在该编码中处理多组同名输入。Overkill用于此实例。Overkill用于此实例。Overkill用于此实例。甚至我也不建议仅用于一个实例。这就是为什么我在此处添加了javascript代码。您的顶级示例不是纯JavaScript:$这太完美了。如何将其发布到php页面?$。post应该在循环中吗?如果有50个表单元素,那么将所有元素一个接一个地放入input_id数组中是一个好方法吗?这是我的解决方案。如果给我们一个表单标签,可能有一个ID,那么这将影响答案。我处理的是被要求的和被给予的。我知道这已经有一段时间了,PMJI-我很好奇为什么你说jQuery太过分了。证明链接似乎只是证明js有效——而不是为什么它更好。TIA想知道这方面的任何信息。