使用ajax传递给php的值

时间:2013-05-02 13:39:21

标签: php mysql jquery

我有以下脚本:

<script type="text/javascript" >

$('form').each(function() {
    $(this).on('submit', function() {

var first_firstname = $(".first_firstname", this).val();
var first_lastname = $(".first_lastname", this).val();
var second_firstname = $(".second_firstname", this).val();
var second_lastname = $(".second_lastname", this).val();
var TeamName = $(".TeamName", this).val();
var dataString = 'first_firstname='+ first_firstname + '&first_lastname=' + first_lastname +
'&second_firstname=' + second_firstname + '&second_lastname=' + second_lastname + '&TeamName=' + TeamName;

 $.ajax({
type: "POST",
url: "data.php",
data: dataString,
success: function(){
window.setTimeout(function(data)
{
$('#propspectDiv').html('Team Name Added!');
$('#data').css("display","block");
$('#data').html(data);
}, 2000);
}

});

return false;
});

</script>

以下php使用mysql数据库在页面上生成多个表单

<?php    

echo '<table class="greensmalltbl" cellspacing="10px" cellpadding="5px"><div id="propspectDiv"></div>';

    for ($i=1,  $o=$totalEntrants; $i<=$half; $i++, $o=$o-1) {

    $formid = $i;


echo "<div style='border:3px;'><form action='' method='post'>
<tr><td><input type='text' name='first_firstname' id='first_firstname' value='$firstName[$i]' />
<input type='text' name='first_lastname' id='first_lastname' value='$lastName[$i]' />
  Skill Level : ".$skill[$i]."</td></tr>";
echo "<tr><td>WITH</td></tr>";
echo "<tr><td><input type='text' name='second_firstname' id='second_firstname' value='$firstName[$o]' />
<input type='text' name='second_lastname' id='second_lastname' value='$lastName[$o]' /> Skill Level ".$skill[$o]."</td></tr>";
echo "<tr><td>Enter Team Name : <input type='text' name='TeamName' id='TeamName' value='' />
<input type='submit' name='submit' value='Submit'></form></td></tr>";

    }

echo '</table>';

&GT;

我想用每种形式的TEAM NAME更新db表

问题是只有第一个表单输入传递所有其他表单什么都不做 我已经尝试了ajax代码的许多变体,但没有一个有效。  谁能在这里找到问题

1 个答案:

答案 0 :(得分:0)

此行不会返回表单。

var parent = $(this).parent('form');

因为您的提交按钮包含在trtd标记内。要么摆脱这些标签(无论如何它们都是invallid,因为你没有在table中使用它们),或者将你的代码更新为:

var parent = $(this).closest('form');

closest()搜索元素的所有祖先,并返回选择器的第一个匹配项。 在这里查看文档:{​​{3}}

或者,如果您的页面中只有一个表单,那么您可以去:

var parent = $('form');

::编辑::

行。忘记以上所有内容。好像你甚至没有在代码中使用父变量。 更重要的一个问题是,即使您在表单提交按钮上捕获Click事件,您可能真正想要做的是捕获表单的提交事件。

所以将第一行代码更改为:

$('form').on('submit', function() {

此外,在您的HTML中,您的代码无效。

<form action'' method='post' id='$formid'>

action''应为action = ''

这可能无法解决您的问题,因为可能会有更多错误。下次,在发布问题之前尝试验证您的代码。

::编辑::

最后编辑,我保证。我很快再次通过你的代码,似乎你会有多种形式。这意味着,您将获得具有相同ID的不同形式的元素。对于整个页面,id应该是唯一的。因此,当您尝试获取此$("#second_firstname").val();之类的值时,这将无法正常工作。因为jQuery不知道你的意思是什么元素,所以在页面中多次出现的所有元素都需要有一个类而且不能有id。

然后,您可以通过将内容更改为:

来循环播放表单
$('form').each(function() {
    $(this).on('submit', function() {

        var first_firstname = $(".first_firstname", this).val(); // . instead of # and use 'this' as context

        // and so on..
        // the rest of your code here.
    }
});

http://api.jquery.com/closest/