1

我需要使用 jQuery 通过 .ajax 提交一个 html 表单。当我正常提交而不是通过 ajax 提交时,一切正常。我在切换到 ajax 时遇到了问题。

该表单具有不断变化的输入数量。(特定组中的每个用户一个,组可以有不同数量的用户)。所以我这样命名输入:

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

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

我为每个用户提供了另一个输入,以相同的方式完成,我们可以称之为 sample2['1'] 等等。

因此,使用 php,我只需获取这 2 个数组并使用类似的计数器运行它们,然后根据需要将它们插入到我的数据库中。这一切都很好。但我需要使它成为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;

} ?>    

我究竟做错了什么?

4

1 回答 1

1

thearray只是javascript中的一个变量名,所以没有$_POST['thearray'],并且数据不是作为JSON发送的,所以不需要使用json_decode

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

试试看$_POST['sampleA']

查看文档serialize()会发现它以相同的格式发送数据,就好像没有 AJAX 提交表单一样

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

于 2013-02-01T23:13:54.063 回答