PHP while 循环在 JavaScript 函数中


php while loop in javascript function

我有一些代码允许我使用javascript向结果表添加行。我基本上在表格中设置了第一行,然后有一个添加行按钮来复制该行。当我尝试添加使用 PHP 拉取结果的下拉字段时,这工作正常。当我单击按钮时,该行仍然添加,但 php 下拉部分没有显示。

    function addOpenResult() {
  var openResults = document.getElementById("openResults");
  var openResultsRow = openResults.insertRow(openResults.rows.length-1);
  var col1html = "<td width='50'><input size='5' width='100' type='text' name='rsRD1' /></td>";
  var col2html = "<td width='50'><input size='5' width='100' type='text' name='rsRD2' /></td>";
  var col3html = "<td width='50'><input size='5' width='100' type='text' name='rsRD3' /></td>";
  var col4html = "<td width='50'><input size='5' width='100' type='text' name='rsRD4' /></td>";
  var col5html = "<td width='100'><input size='10' width='100' type='text' name='rsScore' /></td>";
  var col6html = "<td width='200'><select name='playerID'><option selected>---- Select Player ---</option>" . <?php while ($trpRow=mysql_fetch_array($trpResult)) {extract($trpRow); echo '<option value=$playerID>$lastName, $firstName</option>' ;}?> . "</select></td>";
  var col7html = "<td width='100'><input size='10' type='text' name='rsAmount' /></td>";
  var col8html = "<td width='100'><input size='10' type='text' name='rsOtherWinnings' /></td>";
  var col9html = "<td width='100'><input size='10' type='text' name='rsOtherValue' /><input type='hidden' name='catID' value='15'></td>";

  var col1 = openResultsRow.insertCell(0); col1.innerHTML=col1html;
  var col2 = openResultsRow.insertCell(1); col2.innerHTML=col2html;
  var col3 = openResultsRow.insertCell(2); col3.innerHTML=col3html;
  var col4 = openResultsRow.insertCell(3); col4.innerHTML=col4html;
  var col5 = openResultsRow.insertCell(4); col5.innerHTML=col5html;
  var col6 = openResultsRow.insertCell(5); col6.innerHTML=col6html;
  var col7 = openResultsRow.insertCell(6); col7.innerHTML=col7html;
  var col8 = openResultsRow.insertCell(7); col8.innerHTML=col8html;
  var col9 = openResultsRow.insertCell(8); col9.innerHTML=col9html;
  var col10 = openResultsRow.insertCell(9); col10.innerHTML=col10html;
}

你错误地将 JavaScript 字符串与 PHP 内容连接起来。改变

var col6html = "<td width='200'><select name='playerID'><option selected>---- Select Player ---</option>" . <?php while ($trpRow=mysql_fetch_array($trpResult)) {extract($trpRow); echo '<option value=$playerID>$lastName, $firstName</option>' ;}?> . "</select></td>";

<?php
$options = "";
while ($trpRow=mysql_fetch_array($trpResult)) {
    extract($trpRow);
    $options .=  "<option value='"$playerID'">$lastName, $firstName</option>" ;
}
?>
var col6html = "<td width='200'><select name='playerID'>"+ 
                  "<option selected>---- Select Player ---</option>" +
                  <?php echo json_encode($options) ?>  +
               "</select></td>";

当页面生成时,PHP 代码在服务器端运行一次,然后发送到浏览器进行解释。如果您查看页面的源代码,您会看到生成的 JavaScript 中存在错误。从这个来看,你生成的JavaScript字符串似乎没有被引用。

var col6html = "<td width='200'><select name='playerID'><option selected>---- Select Player ---</option>" <?php while ($trpRow=mysql_fetch_array($trpResult)) {extract($trpRow); echo " + '<option value=$playerID>$lastName, $firstName</option>'" ;}?> + "</select></td>";

我还没有测试过,但这样的事情应该可以做到。我将串联运算符移到生成的代码中并添加了引号。

您在 Javascript 字符串连接操作中使用 PHP 字符串 concat 运算符.。你应该使用 Javascript concat 运算符+

echo '<option value=$playerID>$lastName, $firstName</option>'也应该用双引号括起来,因为您希望将其输出为 Javascript 字符串

echo '"<option value=$playerID>$lastName, $firstName</option>"'