2011-08-08 16 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

あなたはこのラインを持つ夫婦の問題を持っています文字列の連結を使用するので、変数の周りにドットを入れたくありません。それは複雑な変数なので、コードは{$row[schedule]}のようになります。

第2に、文字列scheduleを引用符で囲む必要があります。そうしないと、PHPは警告をスローして文字列として使用する前にその名前の定数を検索します。インクルードがliterately \n書かれている場合を除き

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

Javascriptがまた、文字列内の改行文字が好きではありません。だから、行は以下のように見ていることになります。

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

やPHP、単一引用符を使用して行います:あなたは、あなたの\n\\nにそのPHPの出力の代わりに実際の改行文字の\nのでを変更する必要があることを意味する

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

パウロは、私はしかし、それはまだJSの問題を引き起こしている...これは作業に近いと思います。他のアイデア?私はそれを編集した –

+0

@mitch。私はそれが今で働くと思います。 – Paulpro

+0

うわーあなたが問題を指摘した後は簡単でした!ありがとう!!!! –

0

問題は、単一引用符をエスケープしている間、あなただけのPHPでこれをやっている"<option value=\'.$row[schedule].\'>...

です。それらが出力されると、それらは引き続きシングルクォートになります。そのため、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"; 

最初は.のあなたではないです。

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; ?>'; 
関連する問題