我正在尝试将数组从ajax传递到php (控制器)。
当第一个代码的var_dump($data)返回适当的内容而第二个代码返回NULL时,第二个代码有什么问题?
第一。好的。
function myFunction() {
var elementy = document.getElementsByClassName('inputISBN');
var data = elementy[0].value;
$.ajax({
url: "{{ path('test') }}",
type: "POST",
data: { "data": data }
});
}第二。坏的
function myFunction() {
var elementy = document.getElementsByClassName('inputISBN');
var data = [];
data[elementy[0].name] = elementy[0].value;
$.ajax({
url: "{{ path('test') }}",
type: "POST",
data: { "data": data }
});
}第三。丑
var elementy = document.getElementsByClassName('inputISBN');
undefined
var data = [];
undefined
data[elementy[0].name] = elementy[0].value;
"667"第三种是从浏览器控制台中编写的socond代码中逐行进行。它是应该归还的。
编辑
数据从这里提取出来:
<input type="number" class="inputISBN" size="2" name="exampleName"
value="666" onchange="myFunction()">发布于 2015-04-28 23:40:01
当将数组传递给PHP时,您希望包括数组指示符:[]。I thi8nk你需要一个对象:{}。
function myFunction() {
var elementy = $('.inputISBN');
var data = {};
$.each(elementy, function(){
data[$(this).attr('name')] = $(this).val();
})
$.ajax({
url: "{{ path('test') }}",
type: "POST",
data: { "data": data }
});
}此时,您还可能希望序列化数据(正如@Adelphia在另一个答复中提到的那样):
'data': JSON.stringify(data)
jsFiddle:https://jsfiddle.net/Twisty/cw77ann7/
您可以在PHP:print_r($_POST['data']);中调用它
发布于 2015-04-28 23:51:59
您希望将您的data变量传递给PHP,它是一个数组,对吗?为什么不使用data = JSON.stringify(data);,然后站在PHP的一边,$data = json_decode($_POST['data'], true);
function myFunction() {
var elementy = document.getElementsByClassName('inputISBN');
i = elementy.length;
data = [];
while(i--) data[elementy[i].name] = elementy[i].value;
data = JSON.stringify(data);
$.ajax({
url: "{{ path('test') }}",
type: "POST",
data: { "data": data }
});
}https://stackoverflow.com/questions/29931761
复制相似问题