循环输入并获取选中的值

时间:2016-04-28 03:37:42

标签: javascript arrays ajax

我正在尝试从表单中获取按名称分组的无线电输入列表,它们都有不同的名称。我正在尝试使用它们创建一个数组,如果选中它们,则将1附加到数组,否则追加0。没有弹出警告框,因此我假设函数processDataForFinalization未被调用。

我不知道我是如何附加到数组有什么问题。或者,如果这是一个更大的错误。

提前致谢。

EDIT4 以下是updateBallot.php代码

TwoResults.txt看起来像:

0 0 0 0 0 0 0 0 
3 4 1 

<?php

$name = $_POST['name'];
$points = $_POST['points']; //array of user vote
echo $points;

$txt_file = file_get_contents($name.'Results.txt');

$rows = explode("\n", $txt_file); // rows-array separated by new line

foreach($rows as $row => $data) 
{
    $row_datas = explode(' ',$data);
}

$goods = $row_datas[0];
$goodies = $row_datas[1];

$newArr = [];
for($j=0;$j<count($points);$j++) {
    $newArr[$j] = $goods[$j] + $points[$j];
}

$newText = "";
foreach($newArr as $nArr => $nData) {
    $newText .= $nData." ";
}
$newText .= "\n";

$secondNewArr = [];

$sizeOfBottom = count($goodies);

for($k=0;$k<$sizeOfBottom;$k++) {
    $secondNewArr[$k] = $goodies[$k];
}

foreach($secondNewArr as $neArr => $neData) {
    $newText .= $neData." ";
}
$myFile = fopen($txt_file,"w+");
fwrite($myFile, $newText);
fclose($myFile);

?>

EDIT3 以下是页面的输出HTML。

<form action="submitElection.php" method="post">
        <input type="hidden" name="id" value="20">
        <input type="hidden" name="numQs" id="numQs">
        <input type="hidden" name="arr" value="Array">

        <script>
            var a = document.getElementById("numQs");
            a.value = numQs;
        </script>

        <div id='ballotElement'><h4><u>q</u></h4>                  
        <input type="radio" name="input0" value="1">
                  a                  <br>
                                  <input type="radio" name="input0" value="1">
                  a                  <br>
                                  <input type="radio" name="input0" value="1">
                  a                  <br>
                </div>                
                <script>
                  var numQs = 1;
                </script>
                <div id='ballotElement'><h4><u>q</u></h4>                        
                <input type="radio" name="input1" value="1">
                  a                  <br>
                                  <input type="radio" name="input1" value="1">
                  a                  <br>
                                  <input type="radio" name="input1" value="1">
                  a                  <br>
                                  <input type="radio" name="input1" value="1">
                  a                  <br>
                </div>                
                <script>
                  var numQs = 2;
                </script>
                <div id='ballotElement'><h4><u>q</u></h4>                  
                <input type="radio" name="input2" value="1">
                  a                  <br>
                </div>                
                <script>
                  var numQs = 3;
                </script>
                <br><br><br>      
             <div class="submit">
             <input type="submit" value="Submit ballot" class="btn btn-primary btn-large" onclick="return confirmSubmit()">
      </div>
        </form>

EDIT2 以下是该页面的HTML。

<form action="submitElection.php" method="post">
        <input type="hidden" name="id" value="<?php echo $id;?>">
        <input type="hidden" name="numQs" id="numQs">
        <input type="hidden" name="arr" value="<?php echo $arr;?>">

        <script>
            var a = document.getElementById("numQs");
            a.value = numQs;
        </script>

        <?php

        if (file_exists($name.'.txt')) {
          if($type==1) {
            $inputType = "checkbox";
          } else {
            $inputType = "radio";
          }

            $txt_file = file_get_contents($name.'.txt');
            $rows = explode("\n", $txt_file);
            array_shift($rows);

        $vals = 0;

            foreach($rows as $row => $data) 
            {
              $arrCount = 0; // number of elements in array
                echo "<div id='ballotElement'>";
                $row_data = explode('^',$data);

                $info[$row]['questions'] = $row_data[0];
                $info[$row]['answers'] = $row_data[1];

                echo "<h4><u>".$info[$row]['questions'] . "</u></h4>";
                //echo $info[$row]['answers'] . "<br>";

                $lines = explode("~",$info[$row]['answers']);
                foreach($lines as $line => $lData) { 

                $answers[$row][$line] = $lData;
                if($answers[$row][$line] !== "") {
                  $arrCount++;
                ?>
                  <input type="<?php echo $inputType; ?>" name="input<?php echo $row; ?>" value="1">
                  <?php echo $answers[$row][$line]; ?>
                  <br>
                <?php }
                  $vals++;
                }
              if($writeIn == "y") { 
              $arrCount++; ?>
                <input type="text" name="writeIn<?php echo $row; ?>" placeholder="Write in">
            <?php 
                }
                echo "</div>";
                array_push($arr, $arrCount);
                ?>

                <script>
                  var numQs = <?php echo count($arr); ?>;
                </script>
                <?php

              }
        } else {
          header('Location: error.php');
        }
            echo "<br><br><br>";

        <input type="submit" value="Submit ballot" class="btn btn-primary btn-large" onclick="return confirmSubmit()">
        </form>
从getData()调用

编辑 getActualData() 这是getData(),这个函数有效,所以我不确定为什么getActualData()不起作用,因为它们基本上是一样的。

function getData() {


        var parts = 0;
        for(var i=0; i<numQs; i++){
          var checked = false;
          var inp = document.getElementsByName('input'+i);
          for(var j=0; j<inp.length && checked == false; j++){
            if(inp[j].checked) {
              checked = true;
              parts++;
            }
          }
        }
        if(parts != numQs){
          window.alert('Please vote for at least one candidate per race.');
          return false;
        } else {
          window.alert('Okay');
          getActualData();
          //return true;
        }

    }
  function processDataForFinalization() {
    $.ajax({
      url: 'updateBallot.php',
      type: 'post',
      data: {"points" : val, "name":name},
      success: function(data) {
        // Do something with data that came back. 
        window.alert(data);
        //return true;

      }
    });

  }

  var val = [];
  function getActualData() {

    for(var k=0;k<numQs;k++) {

      var inpu = document.getElementsByName('input'+k);
      for(var jk=0;jk<inpu.length;jk++) {

        window.alert('almost there');
        if(inpu[jk].checked) {
          window.alert('hello');
          val.array_push(1);
          window.alert(val.length);
        } else {
          val.array_push(0);

        }
      }
    }

   processDataForFinalization();

  }

0 个答案:

没有答案