У меня есть эта проблема с моим кодом jquery:
<?php
//I oppen a text document, read the text inside of it and write it inside my html page.
//When someone clicks on a line, I want to take that very same line and send it via select(String) function.
$handle = fopen($_POST['lien'], 'r');
if ($handle)
{
while (!feof($handle))
{
$buffer = fgets($handle);
echo "<div onclick='select(\" ".$buffer." \");'>".$buffer."</div><br/>";
//It works when I put a simple string within the select param:
//echo "<div onclick='select(\" text \");'>".$buffer."</div><br/>";
}
fclose($handle);
}
?>
Код jquery:
function select(text){
alert(text);
//$("#selected").html();
}
где вы, ребята, думаете, проблема?
Благодаря :)
Попробуйте изменить строку:
echo "<div onclick='select(\" ".$buffer." \");'>".$buffer."</div><br/>";
в
echo "<div onclick='select(\" ".rtrim($buffer)." \");'>".$buffer."</div><br/>";
или:
echo "<div onclick='select($(this).text());'>".$buffer."</div><br/>";
fgets
считывает строки из файла и возвращает их с символами конца строки, эти символы печатают вам html-код и вызывают ошибку JavaScript - SyntaxError: неопределенный строковый литерал (я вижу это в консоли Firefox JavaScript). Ошибка повышения, потому что конец строки в JavaScript работает так же, как; символ - конец оператора, поэтому в вашем коде оператор заканчивается до закрытия строкового литерала
Возможно, ваш буфер $ содержит некоторые двойные кавычки, которые затем мешают окружающим двойным кавычкам. Посмотрите на подготовленный код HTML, если это так, возможно, вы увидите что-то вроде этого:
<div onclick='select("He said: "Freeze!"")'>
... который Javascript не может правильно разобрать. Если это так, рассмотрите возможность использования:
echo "<div onclick='select(".json_encode($buffer).")'>";