0

非表示の iframe を介してリストにオプションを動的に追加したい。私の間違いは以下のPHPにあると思われます:

<?php echo 'var oInner  = document.createTextNode("'.$donnees["name"].'");'; ?>

私のコードは次のように完全に動作するためです:

<?php echo 'var oInner  = document.createTextNode("Newoption");'; ?>

createtextnode が私の PHP 変数を取得したくない理由がわかりません... データベースは私の Web サイト外のサーバーにあるため、同じオリジン ポリシーである可能性があると考えました。

知らない。

完全なコードが同封されています。

私の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();
?>
4

3 に答える 3

0

簡単に試しましたoOption.innerHTML = '<?php echo $donnees["name"] ?>';か?

于 2012-04-28T22:12:04.070 に答える
0

インデックス付きの要素が見つからないのではないかと疑っています。しかし、すべてのケースで、以下はうまくいくはずです。

<?php echo 'var oInner  = document.createTextNode("'. (isset($donnees["name"]) ? $donnees["name"] : '') .'");'; ?>
于 2012-04-28T23:33:13.813 に答える
0

解決策が見つかりました:それは\nを挿入するphpだったので、解決策は次のことです:

$desc= 'var oInner  = document.createTextNode("'.$donnees["name"].'");';
$desc=  str_replace("\n", "",$desc);
$desc=  str_replace("\r", "",$desc);

みんなありがとう

于 2012-04-29T16:34:43.483 に答える