0

我正在尝试将表单输入作为数组发送到 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
4

2 回答 2

3

当您应该使用对象时,您正在使用数组。

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();
于 2012-07-21T19:11:23.043 回答
0

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

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

教训:

  • 一步一步做。越愚蠢越好。
  • 在每一步之前和之后,验证数据。
于 2012-07-21T19:12:45.587 回答