首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用jQuery通过ajax提交表单?

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

Stack Overflow用户
提问于 2013-02-02 07:05:55
回答 1查看 224关注 0票数 1

我需要提交一个与jQuery通过.ajax的html表单。当我正常提交时,不是通过ajax,一切都很好。正是在切换到ajax的过程中,我遇到了问题。

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

代码语言:javascript
运行
复制
<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端正确地反序列化。

以下代码不起作用,但我将把它包含在这里,以向您展示我一直在做的事情:

代码语言:javascript
运行
复制
function updateOnCourt() {             
    var thearray = $('#sub-form').serialize();
    $.ajax({
      url: 'sub-update.php',
      method: 'POST',
      data: thearray,
      success: function() {
        alert('Success: '+thearray);
      }
    });
  }

然后在我的PHP脚本中:

代码语言:javascript
运行
复制
<?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;

} ?>    

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-02 07:13:54

JSON在javascript中只是一个变量名,所以没有$_POST['thearray'],数据也不会以json_decode的形式发送,所以不需要使用JSON

您希望访问表单控件中的name属性:

试着看看$_POST['sampleA']

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

接口参考:http://api.jquery.com/serialize/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14656581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档