我需要提交一个与jQuery通过.ajax的html表单。当我正常提交时,不是通过ajax,一切都很好。正是在切换到ajax的过程中,我遇到了问题。
表单的输入数量不断变化。(对于特定组中的每个用户,每个组可以具有不同数量的用户)。因此,我将输入命名为:
<input type="hidden" name="<?php echo 'sampleA['. $i .']'; ?>" value="sampleValue" />
其中$i是一个计数器,因此输入是sampleA'1‘和sampleA'2’,依此类推。
我为每个用户提供了另一个输入,以同样的方式完成,我们可以将其命名为sample2'1‘,依此类推。
所以用php,我只需要得到这两个数组,然后用一个类似的计数器遍历它们,然后根据需要将它们插入到我的db中。这一切都运行得很好。但我需要让它成为ajax。
如何通过jQuery的.ajax函数将这两个数组传递给php脚本,然后在php中如何处理?
我尝试在我的表单上使用.serialize,但它将所有用户的两个输入序列化为一个数组,并且我无法在php端正确地反序列化。
以下代码不起作用,但我将把它包含在这里,以向您展示我一直在做的事情:
function updateOnCourt() {
var thearray = $('#sub-form').serialize();
$.ajax({
url: 'sub-update.php',
method: 'POST',
data: thearray,
success: function() {
alert('Success: '+thearray);
}
});
}
然后在我的PHP脚本中:
<?php
$size = count($_POST['thearray']);
$finally = json_decode($_POST['thearray'], true);
// start a loop in order to update each record
$i = 1;
while ($i < ($size+1)) {
// define each variable
$pid = $finally[$i];
$playing = $finally[$i];
$query = "UPDATE players SET
on_court = '{$playing}'
WHERE id = {$pid}";
mysql_query($query, $connection);
$i = $i + 1;
} ?>
我做错了什么?
发布于 2013-02-02 07:13:54
JSON在javascript中只是一个变量名,所以没有$_POST['thearray']
,数据也不会以json_decode
的形式发送,所以不需要使用JSON
您希望访问表单控件中的name
属性:
试着看看$_POST['sampleA']
。
查看serialize()
的文档,就会发现它以相同的格式发送数据,就好像表单是在没有AJAX的情况下提交的
接口参考:http://api.jquery.com/serialize/
https://stackoverflow.com/questions/14656581
复制相似问题