我需要从ajax发送到php的字母数字数组中接收键和值的名称。
由此:
<input class="input" name="one" value="1" onchange="myFunction()">
<input class="input" name="two" value="2" onchange="myFunction()">
<input class="input" name="three" value="3" onchange="myFunction()">
从循环解析
{% for x in y %}
<input class="input" name="{{ x.k }}" value="{{ x.v }}" onchange="myFunction()">
{% endfor %}
我需要print_r()这样的东西:
Array
(
['one'] => 1,
['two'] => 2,
['three'] => 3,
)
如果我这样做:
function myFunction() {
var elementy = document.getElementsByClassName('input');
var data = {};
var key = elementy[0].name;
var value = elementy[0].value;
data = { key: value};
$.ajax({
url: "{{ path('test') }}",
type: "POST",
data: {data:data} ,
});
}
print_r($ data)返回:
Array
(
[key] => 1
)
如果我这样做:
function myFunction() {
var elementy = document.getElementsByClassName('input');
var data = {};
data = {elementy[0].name : elementy[0].value};
$.ajax({
url: "{{ path('test') }}",
type: "POST",
data: {data:data} ,
});
}
此行中有
Uncaught SyntaxError: Unexpected token [
data = {elementy[0].name : elementy[0].value};
我需要做这样的事情:
function myFunction() {
var data = [];
var elementy = document.getElementsByClassName('input');
for (var i = 0; i < elementy.length; i++){
data[elementy[i].name] = elementy[i].value;
}
$.ajax({
url: "{{ path('test') }}",
type: "POST",
data: {data:data}
});
}
但没有语法错误
Uncaught SyntaxError: Unexpected token [
最佳答案
如果您在字段周围有一个form
元素,那么最简单的方法是将serialize的格式设置为:
data: $('form').serialize()
^^^^ if you have more forms, address it by its ID or something similar
如果您没有表格,也可以使用:
data: $('.input').serialize()
因为
serialize
也可以用于处理单个表单控件的选择。