2011-08-08 76 views
1

这个字符串有一个PHP回声。我一定弄错了一些东西,因为它似乎会导致JS错误。我尝试了所有我能想到的方法来实现这一目标。如果我把php字符串取出一切正常。如果我采取PHP选择,并将其放置在jquery字符串工作。我想我只需要一些结合PHP字符串和JS的帮助。 (忽略字符串间距,我只是这样做,以便它更容易阅读)PHP/jquery字符串导致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

您有这行一对夫妇的问题:

echo "<option value=\'.$row[schedule].\'> $row[schedule] </option>\n"; 

首先是.的你是不是使用字符串连接,所以你不想在你的变量周围加点。由于它是一个复杂的变量,你的代码会更好,如{$row[schedule]}

其次,您需要在字符串schedule周围加引号,否则PHP会在引发警告并将其用作字符串之前搜索具有该名称的常量。因此,线最终会看起来像:

echo "<option value=\'{$row['schedule']}\'>{$row['schedule']}</option>\n"; 

的Javascript也除非是literately \n写不串喜欢换行符。这意味着你应该改变你的\n\\n,让PHP输出\n,而不是实际的换行符:

echo "<option value=\'{$row['schedule']}\'>{$row['schedule']}</option>\\n"; 

或者使用PHP单引号和做:

echo '<option value="'.$row['schedule'].'">'.$row['schedule'].'</option>\n'; 
+0

保罗,我认为这是接近工作......但它仍然导致JS问题。任何其他想法? –

+0

@mitch我编辑它,我认为它现在可以工作 – Paulpro

+0

哇这很容易,一旦你指出的问题!感谢,工作!!!! –

0

的问题是"<option value=\'.$row[schedule].\'>...

当您逃逸单引号,你只在PHP这样做。当它们输出时,它们仍然是单引号,因此导致JS错误。尝试对选项值使用双引号并将其转义。

<?php while($row = $db->sql_fetchrow($result)){echo "<option value=\"$row[schedule]\"> $row[schedule] </option>\n";}?> 
+0

为什么投票下来? – Chris

+0

这不能解决任何问题。他正在输出一个用于Javascript的'\''。他可以像'\\'一样再次逃避它,但是因为他使用双引号字符串,所以不需要它。 – Paulpro

+0

我同意。在PHP代码中转义的单引号是毫无意义的,在其他php问题中也是如此。但是,我的代码确实解决了这个问题。它导致PHP代码正在回显的HTML,被正确输出而没有单引号,因此删除了js错误。 – Chris

0

你有多余的斜线在那里。

<option value=\'.$row[schedule].\'> 
      ^    ^
       |-----------------|---------- You don't need these 

我不知道这是问题的原因,但他们绝对不是必需的;你用双引号开始你的字符串,"

-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"; 
1

这是我用

PHP代码:

$name = addslashes($name); 
$options .= "<option value=\"$id\">$name</option>\\"."\n"; 

JAVASCRIPT:

var options = '<?php echo $options; ?>'; 
相关问题