JavaScript — добавить новый выбор с опциями из базы данных

У меня есть функция, чтобы добавить новый выбор, используя кнопку в таблице с ID = «maTable»

<button type="button" onclick ="addNew()"> Add More Agent</button>

Используя JS:

 function Addnew(){
var table=document.getElementById("maTable");
var row=table.insertRow([table.rows.length]-1);
var len=(table.rows.length);
var newid="agentID"+len;
var newida="agentGroup"+len;

var cell1=row.insertCell;
var cell2=row.insertCell;
var cell3=row.insertCell;

var new_optionAgent =
"<select class=\"opsi\"id="'+newida+'">"+"<option selected=\"selected\"disabled=\"disabled\">Agent<\/option>"+"<option value=\"agentA\">Agent A<\/option>"+"<option value=\"agentB\">Agent B<\/option>"+"<option value=\"agentC\">Agent C<\/option>"+"<option value=\"agentD\">Agent D<\/option>"+"<\/select>"
cell1.innerHTML="Choose Agent" +" "+len;
cell2.innerHTML=":";
cell3.innerHTML= new_optionAgent;
}

С этим я могу получить кнопку, которая сгенерирует новый выбор с 4 вариантами (это работает). Но теперь возникает проблема, когда я хочу изменить опцию со списком из базы данных. Я использую базу данных php и postgres. Я создал код для того, который еще не сгенерирован кнопкой «AddNew»:

<?php
$que=pg_query("SELECT agentname FROM Agent");

echo "<select name=\"agentname1\"class=\"opsi\" id=\"agentGroup1\" required>";
echo "<option value=\"\" selected=\"selected\"disabled='disabled'>Agent</option>";
While($row=pg_fetch_array($que))
{
echo '<option value="'.$row['agentname'].'"> '.$row['agentname'].'</option>';
}
echo "</select>";
?>

Теперь я хочу сделать кнопку «AddNew», которая генерирует выбор со списком опций из базы данных. Я объединил код php с переменной «new_optionAgent», добавив «\» к некоторым символам. но это не работает.

Я комбинирую вот так

    var new_optionAgent =
'<\?php
\$que=pg_query(\"SELECT agentname FROM Agent\")\;

echo \'<select name=\\\"agentname1\\\"class=\\\"opsi\\\" id=\\\"agentGroup1\\\" required>\'\;
echo \'<option value=\\\"\\\" selected=\\\"selected\\\"disabled=\\\'disabled\\\'>Agent</option>\'\;
While(\$row=pg_fetch_array(\$que))
{
echo \'<option value=\"\'\.$row[\'agentname\']\.\'\"> \'\.$row[\'agentname\']\.\'</option>\'\;
}
echo \"<\/select>\"\;
\?>'

эта комбинация кажется очень неправильной, любая помощь? Спасибо

3

Решение

Это не работает, потому что экранированный обратный слеш используется PHP для экранирования двойных кавычек. Поэтому вам нужно будет добавить еще один набор обратных слэзов и экранировать их, или использовать строку одинарной кавычки в PHP:

<?php
$que=pg_query("SELECT agentname FROM Agent");

echo '<select name=\"agentname1\"class=\"opsi\" id=\"agentGroup1\" required>';
echo '<option value=\"\" selected=\"selected\"disabled=\'disabled\'>Agent</option>';
While($row=pg_fetch_array($que))
{
echo '<option value="'.$row['agentname'].'"> '.$row['agentname'].'</option>';
}
echo "</select>";
?>

Вы не можете встроить PHP внутри такой переменной Javascript. Попробуй это:

<?php
$que=pg_query("SELECT agentname FROM Agent");

$whateverYouWannaCallThisString = '';

$whateverYouWannaCallThisString .= '<select name=\"agentname1\"class=\"opsi\" id=\"agentGroup1\" required>';
$whateverYouWannaCallThisString .= '<option value=\"\" selected=\"selected\"disabled=\'disabled\'>Agent</option>';
While($row=pg_fetch_array($que))
{
$whateverYouWannaCallThisString .= '<option value="'.$row['agentname'].'"> '.$row['agentname'].'</option>';
}
$whateverYouWannaCallThisString .= "</select>";
?>

<script type="text/javascript">
var new_optionAgent = "<?php echo $whateverYouWannaCallThisString; ?>";
</script>

Причина, по которой вы экранируете символы, заключается в том, что вы используете символы, которые окружают саму строку. Например: если вы определяете строку с двойными кавычками " как это: var myString = "Yolo" и вы хотите иметь двойные кавычки " в этой строке вот так: var myString = "Dude, wheres "my" car" тогда вам нужно избежать двойных кавычек " вот внутри этой строки вот так: var myString = "Dude, wheres \"my\" car",

То же относится и к PHP

//Редактировать :
Я отредактировал переменную:

 var new_optionAgent =
<?php echo json_encode($whateverYouWannaCallThisString); ?>;

и это работает 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]