首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将数组从ajax传递给php?

如何将数组从ajax传递给php?
EN

Stack Overflow用户
提问于 2015-04-28 23:35:44
回答 2查看 2.3K关注 0票数 0

我正在尝试将数组从ajax传递到php (控制器)。

当第一个代码的var_dump($data)返回适当的内容而第二个代码返回NULL时,第二个代码有什么问题?

第一。好的。

代码语言:javascript
运行
复制
function myFunction() {
    var elementy = document.getElementsByClassName('inputISBN');
    var data = elementy[0].value;

    $.ajax({
           url: "{{ path('test') }}",
           type: "POST",
           data: { "data": data }

    });   

}

第二。坏的

代码语言:javascript
运行
复制
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 }
    });   
}

第三。丑

代码语言:javascript
运行
复制
var elementy = document.getElementsByClassName('inputISBN');
undefined
var data = []; 
undefined
data[elementy[0].name] = elementy[0].value;
"667"

第三种是从浏览器控制台中编写的socond代码中逐行进行。它是应该归还的。

编辑

数据从这里提取出来:

代码语言:javascript
运行
复制
<input type="number" class="inputISBN" size="2" name="exampleName" 
                value="666" onchange="myFunction()">
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-28 23:40:01

当将数组传递给PHP时,您希望包括数组指示符:[]。I thi8nk你需要一个对象:{}

代码语言:javascript
运行
复制
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']);中调用它

票数 2
EN

Stack Overflow用户

发布于 2015-04-28 23:51:59

您希望将您的data变量传递给PHP,它是一个数组,对吗?为什么不使用data = JSON.stringify(data);,然后站在PHP的一边,$data = json_decode($_POST['data'], true);

代码语言:javascript
运行
复制
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 }

    });   

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29931761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档