javascript - 将 AJAX 与 PHP 循环创建的表单结合使用

标签 javascript php jquery ajax

当我运行这个时,我得到的只是循环中第一个表单的变量。我认为我的问题是表单位于数组中,并且我不知道如何从该数组中获取不同的变量。我是新手。 $id 始终相同,但 $law_id 始终是唯一的。我很感激任何帮助。这是我正在制作的一款游戏,当我发布到另一个页面时,该游戏运行良好,但我真的很想保留一个仅刷新输出 div 的页面。我的代码中有几个循环,但我确信如果我得到了这个循环,我就可以管理其余的循环。

这是我创建表单的 php 循环:

    if ($num_rows > 0){
    while($data = mysql_fetch_object($ballots)){
    $law_id = $data->id;
    $question = $data->question;
    $query3 = "SELECT * FROM initiative_records WHERE initiative_id = '". $law_id ."' AND player_id = '". $id ."'";
    $new_ballots2 = mysql_query($query3,$link) or die("Unable to select: ".mysql_error());
    $num_rows = mysql_num_rows($new_ballots2);
        if ($num_rows == "0"){$x++;
        ?>
            <form name="initiative_create" class="form_inline">
            <input name="pid" type="hidden" value= "<?php echo $id; ?>">
            <input name="gid" type="hidden" value= "<?php echo $law_id; ?>">
            <input type="button" id="button" value="<?php echo $question; ?>" onclick='JavaScript:xmlhttpPost1("initiative_info.php")'>
            </form><br />
            <?php
        }
    }

我的ajax脚本:

function xmlhttpPost1(strURL) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
    self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
    if (self.xmlHttpReq.readyState == 4) {
        updatepage1(self.xmlHttpReq.responseText);
    }
}
self.xmlHttpReq.send(getquerystring1());
}
function getquerystring1() {
    var form     = document.forms['initiative_create'];
var gid = form.gid.value;
var id = form.pid.value;
qstr = 'pid=' + escape(id) + '&' + 'gid=' + escape(gid);  // NOTE: no '?' before querystring
return qstr;
}
function updatepage1(str){
document.getElementById("result").innerHTML = str;
}

最佳答案

您应该为每个表单分配一个唯一的名称并将其传递给您的函数。示例:

<form name="initiative_create<?php echo $x; ?>">
...
<input type="button" id="button" value="<?php echo $question; ?>"
 onclick='JavaScript:xmlhttpPost1("initiative_info.php", <?php echo $x; ?>)'>

你的功能是

function xmlhttpPost1(strURL, name_index) {
...
self.xmlHttpReq.send(getquerystring1(name_index));

function getquerystring1(name_index) {
...
var form     = document.forms['initiative_create' + name_index];

如果我理解正确的话,$x 变量是一个计数器。如果没有,请使用 $i 或其他东西。

我认为您了解我建议更改的内容和原因。

关于javascript - 将 AJAX 与 PHP 循环创建的表单结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171398/

相关文章:

javascript - 无法在按键时提交表单

jquery - 如何从 Rails 3 中的 erb.js 输出助手?

jquery - 如何获取小于数字的tr的id

javascript - 循环淡入淡出句子中的单词

javascript - 需要为 Ajax 驱动的 webapp 创建一个小的 JSON 结构的建议

php - 使用 PHP mail() 函数的 SMTP 身份验证

php - Facebook用户信息存储在数据库中

javascript - dropzonejs 手动删除服务器上的文件,一次一个

javascript - for 循环中的 jQuery .load()

JavaScript - 有效地查找包含一大串字符串之一的所有元素