0

目前我正在从一些多个选择框中发布单个值。如果我想将变量发布为字段活动和 yearOfBirth 上的数组而不是字符串,如何通过更改当前代码来实现这一点?

谢谢!

function showUser() {
    // getting the value that user typed
    var firstName = $("#firstName").val();
    var lastName = $("#lastName").val();
    var sex = $("#sex").val();
    var registrationType = $("#registrationType").val();
    var activity = $("#activity").val();
    var yearOfBirth = $("#yearOfBirth").val();

    // forming the queryString
    var data = 'search_firstName=' + firstName + '&search_lastName=' + lastName + '&search_registrationType=' + registrationType + '&search_activity=' + activity + '&search_yearOfBirth=' + yearOfBirth + '&search_sex=' + sex;

    // if searchString is not empty
    if (firstName || lastName || sex || registrationType || activity || yearOfBirth) {
        // ajax call
        $.ajax({
            type: "POST",
            url: "groupQsearchMember.php",
            data: data,
            beforeSend: function() {
                $('#whileLoading').show();
                $('#results').hide();
            },
            complete: function() {
                $('#whileLoading').hide();
            },
            success: function(html) {
                $("#results").html(html);
                $("#results").fadeIn(700);
            },

        });
    }
    return false;
};​
4

2 回答 2

0

您需要将选择字段的值拆分为一个数组,只需添加.split(','),然后遍历数组以添加数组括号,例如:

var registrationTypeString = "";
$("#registrationType").val().split(',').each(function(item){
    registrationTypeString += '&registrationType[]=' + item;
});

//..

var data = 'search_firstName=' + firstName + '&search_lastName=' + lastName + registrationTypeString + '&search_activity=' + activity + '&search_yearOfBirth=' + yearOfBirth + '&search_sex=' + sex;

使用您的选择字段执行此操作,然后您将在 PHP 中拥有数组。

于 2012-10-05T17:05:44.267 回答
0

不要手动构建 POST 数据,而是确保您的表单元素具有所需的name属性并data像这样创建:

 var data = $("#firstName, #lastName, #sex, #registrationType, #activity, #yearOfBirth").serialize();

根据jQuery 文档,serialize()其中将创建“标准 URL 编码表示法的文本字符串”。

于 2016-01-20T15:39:37.597 回答