将数组作为json发送到php脚本:返回空数组

时间:2012-07-21 19:06:08

标签: php javascript jquery

我正在尝试将表单输入作为数组发送到php脚本

function submit_form(){
    var arr  =  [];
    var key, val ;
    $('#form input').each(function(){

        key = $(this).attr('id');
        val = $(this).val();
        arr[key] = val;

    })
    alert(arr['username']); // check to see if array is not empty

    var jsondata =  JSON.stringify(arr); 

    $.post(base_url+'profile/edit_profile/<?php echo $profile_username; ?>' , {data : jsondata }, function(){
    })
}

在php脚本

$data =  json_decode($_post['data']);
var_dump($data);
exit;

这是结果

array (size=0)
  empty

2 个答案:

答案 0 :(得分:3)

当您使用Object时,您正在使用数组。

var obj = {};
var key, val ;
$('#form input').each(function(){

    key = $(this).attr('id');
    val = $(this).val();
    obj[key] = val;

});

JSON方法将忽略数组的非数字属性。


虽然不使用id属性,但请使用name,然后使用.serialize()

var data = $('#form input').serialize();

答案 1 :(得分:0)

首先需要进行基本调试。在解码数据之前,请将其转储,以确保数据正确无误:

$data =  $this->input->post('data');
var_dump($data);
$array = json_decode($data);
var_dump($array);
exit;

要学习的经验教训:

  • 一步一步走。愚蠢越多越好。
  • 在每个步骤之前和之后,验证数据。
相关问题