如何使用jQuery通过ajax提交表单?

时间:2013-02-01 23:05:55

标签: php jquery mysql ajax

我需要通过jQuery通过.ajax提交一个html表单。当我正常提交,而不是通过ajax,一切都很好。我正在转向ajax遇到问题。

表单的输入数量有所变化。 (对于特定组中的每个用户各一个,组可以具有不同数量的用户)。所以我将输入命名为:

<input type="hidden" name="<?php echo 'sampleA['. $i .']'; ?>" value="sampleValue" />

其中$ i是一个计数器,因此输入为sampleA ['1']和sampleA ['2'],依此类推。

我为每个用户提供了另一种输入方式,我们可以将其称为sample2 ['1'],等等。

所以使用php我只需要获得这两个数组并使用类似的计数器运行它们并根据需要将它们插入到我的数据库中。这一切都运作良好。但我需要把它变成ajax。

如何通过jQuery的.ajax函数将这两个数组传递给php脚本,然后如何在php中处理它?<​​/ p>

我已经尝试在我的表单上使用.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;

} ?>    

我做错了什么?

1 个答案:

答案 0 :(得分:1)

thearray只是javascript中的变量名,因此没有$_POST['thearray']且数据不会以JSON格式发送,因此无需使用json_decode

您想要访问表单控件中的name属性:

尝试查看$_POST['sampleA']

查看serialize()的文档会看到它以与没有AJAX提交表单相同的格式发送数据

API参考:http://api.jquery.com/serialize/