将数组发送到php函数

时间:2012-06-26 11:49:05

标签: php javascript jquery

我正在尝试使用$ _POST将数组发送到php文件,仍然总是得到一个未定义的变量 任何的想法 !!

var all = [];
var textInput = $('input[type=text]');
var checkBox = $('input[type=checkbox]');
var radio = $('input[type=radio]');
textInput.each(function () {
    if ($(this).val() != "") {
        name = $(this).attr('name');
        value = $(this).attr('value');
        all[name] = value;
    }
});
checkBox.each(function () {
    if ($(this).attr("checked")) {
        name = $(this).attr('name');
        value = $(this).attr('value');
        all[name] = value;
    }
});
radio.each(function () {
    if ($(this).attr("checked")) {
        name = $(this).attr('name');
        value = $(this).attr('value');
        all[name] = value;
    }
});
var getSelect = $('#experince');
if (getSelect[0].selectedIndex != 0) {
    name = getSelect[0].name;
    value = getSelect[0].selectedIndex;
    all[name] = value;
}
$.post('test.php', all, function (data) {
    alert(data);
    $.each(data, function (key, value) {
        alert(value);
    });
}, 'json');

PHP文件

    if(!isset($_POST['workF'])){
    $_POST['workF'] ="undefine";
}

if(!isset($_POST['workP'])){
    $_POST['workP']="undefine";

}

if(!isset($_POST['gender'])){
    $_POST['gender']="undefine";
}

if(!isset($_POST['experince'])){
    $_POST['experince']="undefine";
}

if (!isset($_POST['jobs'])){
    $_POST['jobs']="undefine";
}

if(!isset($_POST['location'])){
    $_POST['location']="undefine";

}

$work_type_f = $_POST['workF'];
$work_type_p = $_POST['workP'];
$gender = $_POST['gender'];
$experince = $_POST['experince'];
$jobs = $_POST['jobs'];
$location =$_POST['location'];

enter image description here

3 个答案:

答案 0 :(得分:1)

您最好在字典上运行 JSON.stringify(),然后在PHP中使用 JSON_decode()来检索数组。

答案 1 :(得分:1)

all应该是对象,而不是数组:

var all = {};

jQuery在将它传递给$.post时会为你做必要的转义,但它不会读取数组的对象属性。

然而as Joy stated,你只是试图在这里模仿一个表格。确保输入全部包含在单个表单中,并使用.serialize()获取可以与HTTP请求一起发送的字符串。

答案 2 :(得分:0)

很抱歉,如果我不太了解,但为什么你不使用这样的html属性?

<input type="text" name="all[nameOfText]" />
<input type="text" name="all[nameOfText2]" />

<input type="radio" name="all[nameOfRadio]" />
...