0

逃げる方法はわかったと思いましたが、これはただの心を打たれています。私はこのhtml/phpコンボテキストを取る必要があります:

<select name="mainUsers" class="manageSelect">
<?php
     $users = getAllUsersByUserId($userid);
     echo'<option value="choose">Select a user...</option>';    
     while($user = mysql_fetch_array($users)) {
         echo'<option value='.$user['fname'].' '.$user['lname'].'>'.$user['fname'].' '.$user['lname'].'</option>';      
     }
?>
</select>;    

そしてそれをjavascript変数のinnerHTMLとして設定します。エスケープ構文が正しくないため、クラッシュします。

編集:不明で申し訳ありません。これは機能しておらず、理由はわかりません。

cell2.innerHTML = 
<?php
     echo '<select name="mainUsers" class="manageSelect">';
     $families = getAllFamiliesByUserId($userid);
     echo '<div id="famSelect"><option value="choose">Select a family...</option></div>';       
     while($family = mysql_fetch_array($families)) {
         echo '<div id="famSelect"><option value="'.$family['name'].'">'.$family['name'].'</option></div>';     
     }
     echo '</select>';
?>;
4

3 に答える 3

2

innerHTMLをHTMLを含む文字列に設定する必要があります。JavaScriptでは、その文字列を引用符で区切る必要があるため、次のようになります。

cell2.innerHTML = 
<?php
    echo '\'<select name="mainUsers" class="manageSelect">';
    $families = getAllFamiliesByUserId($userid);
    echo '<div id="famSelect"><option value="choose">Select a family...</option></div>';       
    while($family = mysql_fetch_array($families)) {
        echo '<div id="famSelect"><option value="'.$family['name'].'">'.$family['name'].'</option></div>';     
    }
    echo '</select>\';';
?>;
于 2012-06-30T06:53:31.453 に答える
1

エコーと生成される文字列の間にスペースが必要です。

また、生成しているHTMLは、オプションのvalue属性を引用符で囲んでいません。

これを試してみてください: echo '<option value="'.$user['fname'].' '.$user['lname'].'">'.$user['fname'].' '.$user['lname'].'</option>';

于 2012-06-30T06:35:09.457 に答える
1

引用に問題があります、それは確かにjavascriptエラーをスローします。現在、次のようなコードがあります。

cell2.innerHTML = <select>...</select>

しかし、それは

cell2.innerHTML = '<select>...</select>'

したがって、phpタグを一重引用符で囲みます

cell2.innerHTML = '<?php
//...
?>';

そして、この作業はエスケープなしで行われるため、HTMLコード内で一重引用符を使用しないでください。ただし、エスケープは簡単です。すべての一重引用符を\'に置き換えるだけです。そのように:cell2.innerHTML = '

<?php
     $html = '<select name="mainUsers" class="manageSelect">';
     $families = getAllFamiliesByUserId($userid);
     $html .= '<div id="famSelect"><option value="choose">Select a family...</option></div>';       
     while($family = mysql_fetch_array($families)) {
         $html .= '<div id="famSelect"><option value="'.$family['name'].'">'.$family['name'].'</option></div>';     
     }
     $html .= '</select>';
     echo addslashes($html);
     // Addslashes also slahses double quotes("). If this is causing problems try: echo str_replace("'", "\\'", $html);
?>';
于 2012-06-30T06:58:38.187 に答える