如何从Ajax调用param访问PHP中的数组?

时间:2017-03-14 17:57:34

标签: php jquery ajax

我正在进行Ajax调用:

    $.ajax({
        url: "create_card.php",
        type: "GET",
        data: {deck: selection, data: $(input_form).serialize()}
    });

最初,我只是在调用中使用数组,所以我有data: $(input_form).serialize(),我正在使用此代码从输入表单中获取数据(card_info是一个名为的数组输入表格中的数据):

    for($x = 0; $x < $array_length; $x++) {
        if(isset($_GET[$card_info[$x]])){
            $arg = $_GET[$card_info[$x]];
            $sql_query .= "\"" . $arg . "\"";
            if($x != $array_length - 1) {
                $sql_query .= ", ";
            } else {
                $sql_query .= ")";
            }
        }
    }

但是现在我将额外的参数添加到Ajax调用中,我似乎无法以相同的方式访问数据。我试过$_GET[data[$card_info[$x]]],但这没效果。

1 个答案:

答案 0 :(得分:1)

$(input_form).serialize()将您表单中的数据序列化为string,有点 inputName1=inputValue1&inputName2=inputValue2&inputName3=inputValue3等等。

使用

data: {deck: selection, data: $(input_form).serialize()}

表示您向服务器发送包含两个属性deckdata的对象。在服务器上,此对象将转换为$_GET数组,其中包含两个键:deckdata$_GET['data']将保留string以及之前序列化的值。

如果您使用print_r($_GET),您会看到我正在谈论的内容。

因此解决方案不是混合发送数据的方式。您发送一个字符串,如@ splash58建议:

// here you have a string
data: $(input_form).serialize() + '&deck=' + selection

或对象:

// here you have an object
data: {deck: selection, field1: $("#someId").val(), field2: $("#yaId").val(), /* etc */ }

field1field2是键和$("#someId").val()$("#yaId").val()是用于获取某些值的方法(在本例中使用ID)。