我想通过隐藏的iframe动态地向列表添加选项;我怀疑我的错误在PHP下面:
<?php echo 'var oInner = document.createTextNode("'.$donnees["name"].'");'; ?>
因为我的代码与以下内容完美配合:
<?php echo 'var oInner = document.createTextNode("Newoption");'; ?>
我不知道为什么createtextnode不想接受我的PHP var ...我认为它可能是一个相同的源策略,因为数据库位于我网站之外的服务器上。
我不知道。
你会发现附上完整的代码:
在我的HTML中,我有:
//select or change a country will trigger the javascript part
<select name="countrym" id="countrym" onchange="validcountry();">
<option value"France">France</option>
</select>
//Empty region list
<select name="regionm" id="regionm">
</select>
//My Iframe
<iframe name="upload_iframe2" id="upload_iframe2" frameborder="0"></iframe>
在我的Javascript中我有:
//My function triggering the PHP through the Iframe
function validcountry() {
var countrym = document.getElementById('countrym');
var choixco = countrym.options[countrym.selectedIndex].value;
document.getElementById('upload_iframe2').src = 'region.php?choix='+choixco;
在我的PHP region.php文件中,我有:
<?php
// Get my choice
$codepays = $_GET['choix'];
//Retrieve the regions corresponding to the country
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO(XXX);
$req = $bdd->prepare('SELECT name FROM regions WHERE country = :country');
$req->execute(array('country' => $codepays));
$donnees = $req->fetch();
while($donnees)
{
// I checked the format of the data (no problem so far)
echo var_dump ($donnees['name']);
?>
//I add an option through Javascript
<script language="JavaScript" type="text/javascript">
var oOption = document.createElement("option");
//Here is my big issue:
<?php echo 'var oInner = document.createTextNode("'.$donnees["name"].'");'; ?>
oOption.value = "none";
oOption.appendChild(oInner);
var parDoc = window.parent.document;
var regionm = parDoc.getElementById("regionm");
regionm.appendChild(oOption);
</script>
<?php
$donnees = $req->fetch();
}
$req->closeCursor();
exit();
?>
答案 0 :(得分:0)
您是否尝试过oOption.innerHTML = '<?php echo $donnees["name"] ?>';
?
答案 1 :(得分:0)
我怀疑无法找到索引元素。但是在所有情况下,下面都应该有效。
<?php echo 'var oInner = document.createTextNode("'. (isset($donnees["name"]) ? $donnees["name"] : '') .'");'; ?>
答案 2 :(得分:0)
找到解决方案:这是php插入\ n所以解决方案是执行以下操作:
$desc= 'var oInner = document.createTextNode("'.$donnees["name"].'");';
$desc= str_replace("\n", "",$desc);
$desc= str_replace("\r", "",$desc);
谢谢大家