0

我正在尝试使用 $_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'];

在此处输入图像描述

4

3 回答 3

1

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

于 2012-06-26T11:53:22.390 回答
1

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

var all = {};

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

然而,正如乔伊所说,你只是想在这里模仿一种形式。确保输入全部包含在单个表单中,并用于.serialize()获取可以与 HTTP 请求一起发送的字符串。

于 2012-06-26T11:55:27.780 回答
0

对不起,如果我没有很好地理解,但是为什么你不使用这样的 html 属性呢?

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

<input type="radio" name="all[nameOfRadio]" />
...
于 2012-06-26T11:56:05.247 回答