这个字符串有一个php echo。我一定搞砸了,因为它似乎导致了JS错误。我已经尝试了一切我能想到的工作。如果我把PHP字符串取出一切正常。如果我选择PHP并将其放在有效的jquery字符串之外。我想我只需要一些帮助结合PHP字符串和JS。 (忽略字符串间距我只是这样做,以便更容易阅读)
感谢您的帮助。
$("#billTasks").find('tr').append('
<td>
<select class="billOptions">
<option class="fixedRate" onclick="fixedOption(this)">Bill Fixed Rate</option>
<option class="hourly" onclick="hourlyOption(this)">Bill Hourly</option>
</select>
<input type="text" name="fixedRate" placeholder="Rate" class="fieldWidth100 rate"/>
<select>
<?php while($row = $db->sql_fetchrow($result)){echo "<option value=\'.$row[schedule].\'> $row[schedule] </option>\n";}?>
</select>
</td>');
答案 0 :(得分:1)
这是我使用的
PHP代码:
$name = addslashes($name);
$options .= "<option value=\"$id\">$name</option>\\"."\n";
JAVASCRIPT:
var options = '<?php echo $options; ?>';
答案 1 :(得分:0)
问题出在"<option value=\'.$row[schedule].\'>...
当你逃避单引号时,你只是在PHP中这样做。输出时,它们仍然是单引号,因此导致JS错误。尝试对选项值使用双引号并转义它们。
即
<?php while($row = $db->sql_fetchrow($result)){echo "<option value=\"$row[schedule]\"> $row[schedule] </option>\n";}?>
答案 2 :(得分:0)
你有额外的斜杠。
<option value=\'.$row[schedule].\'>
^ ^
|-----------------|---------- You don't need these
我不知道这是否是问题的原因,但绝对不需要;你是用双引号"
开始你的字符串。
答案 3 :(得分:0)
这一行有几个问题:
echo "<option value=\'.$row[schedule].\'> $row[schedule] </option>\n";
第一个是.
'你没有使用字符串连接,所以你不需要在你的变量周围加点。由于它是一个复杂的变量,因此您的代码更像{$row[schedule]}
。
其次,您需要在字符串schedule
周围加上引号,否则PHP会在发出警告并将其用作字符串之前搜索具有该名称的常量。所以这条线最终看起来像:
echo "<option value=\'{$row['schedule']}\'>{$row['schedule']}</option>\n";
Javascript也不喜欢字符串中的换行符,除非是用文字\n
写的。这意味着您应该将\n
更改为\\n
,以便php输出\n
而不是实际的换行符:
echo "<option value=\'{$row['schedule']}\'>{$row['schedule']}</option>\\n";
或者使用PHP单引号并执行:
echo '<option value="'.$row['schedule'].'">'.$row['schedule'].'</option>\n';
答案 4 :(得分:-1)
您的PHP代码无效。看看:
echo "<option value=\'.$row[schedule].\'> $row[schedule] </option>\n";
您正在尝试使用点运算符连接字符串,但您的字符串未终止(带双引号的字符串的开头,没有结束)。您可以看到stackoverflow的代码突出显示不起作用。
改为使用:
echo "<option value='" . $row[schedule] . "'>" . $row[schedule] . "</option>\n";
或者:
echo "<option value='", $row[schedule], "'>", $row[schedule], "</option>\n";