1

これを実行すると、ループ内の最初のフォームの vars だけが得られます。私の問題は、フォームが配列内にあり、その配列から個別の変数を取得する方法がわからないことだと思います。私は初心者です。$id は常に同じですが、$law_id は常に一意です。助けていただければ幸いです。これは私が作成しているゲームで、別のページに投稿するだけで問題なく動作しますが、出力 div を更新するだけの 1 つのページを維持したいと考えています。コードにはいくつかのループがありますが、これを取得できれば、残りを管理できると確信しています。

これは、フォームを作成する私の 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;
}
4

2 に答える 2