我正在进行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]]]
,但这没效果。
答案 0 :(得分:1)
$(input_form).serialize()
将您表单中的数据序列化为string
,有点
inputName1=inputValue1&inputName2=inputValue2&inputName3=inputValue3
等等。
使用
data: {deck: selection, data: $(input_form).serialize()}
表示您向服务器发送包含两个属性deck
和data
的对象。在服务器上,此对象将转换为$_GET
数组,其中包含两个键:deck
和data
。 $_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 */ }
field1
,field2
是键和$("#someId").val()
,$("#yaId").val()
是用于获取某些值的方法(在本例中使用ID)。