2009-11-11 2 views
1

У меня есть переменная внутри моего php-файла, которую я хочу передать функции javascript всякий раз, когда пользователь нажимает ссылку на моей php-странице.Почему я не могу передать эту переменную функции javascript?

вот PHP вкратце:

$delete_img=$image_id.'_'.$newfilename; 
$display_image.="<td><img src='../temp_images/$newfilename'>"; 
if ($i==$extra_pic){ 
$display_image.="<br><a href='#' onclick='window.parent.reset_imageform($i, $delete_img);'>delete picture</a></td>";} 

: «если ($ я == $ extra_pic) ИСТИНА, так что не в голову, что ...

Проблема заключается в том, если нажать на ссылка «удалить изображение» должна быть вызвана функцией reset_imageform (nr, pic_nr), но это не происходит, когда я пытаюсь передать переменную $ delete_img в функцию. Как только я удалю эту переменную из вызова, reset_imageform ($ я);» то он будет работать, но добавив эту переменную, она не будет работать. Функция вообще не вызвана!

Переменная содержит случайный id nr с символом подчеркивания, а затем имя файла, например, это : 23432423439_picture.jpg

там что-то Im здесь отсутствует, я должен сделать что-то $ delete_img перед отправкой его в PHP

Все мои документы в формате UTF-8

Благодаря

?!

PS: просто дайте мне знать, если вам нужно больше ввода ...

ответ

3

Если вы передаете строку в функцию JavaScript, он должен быть правильно указаны:

Так что без PHP, это выглядит следующим образом:

<br><a href='#' 
    onclick='window.parent.reset_imageform(5, "23432423439_picture.jpg");'> 
    delete picture</a></td> 

Таким образом, чтобы получить, что в результате HTML, вам нужно включить цитаты:

$display_image.="<br><a href='#' 
    onclick='window.parent.reset_imageform({$i}, \"{$delete_img}\");'> 
    delete picture</a></td>"; 

у нас есть несколько уровней кавычек здесь, так что двойные кавычки 23432423439_picture.jpg должны быть экранированы, как \"

+0

Это работает! спасибо alot – 2009-11-11 17:36:22

+0

Рад помочь – artlung

5

Поскольку это строка, вам нужно будет процитировать ее.

Правильный путь таков:

$display_image.='<br><a href="#" onclick="window.parent.reset_imageform(' . $i . ', ' 
    . htmlspecialchars(json_encode($delete_img)) 
    . ');">delete picture</a></td>'; 

Я поменял местами кавычки, чтобы заставить его работать на любой строки; иначе, если вы использовали его где-то в другом месте, а строка содержала апостроф, это не сработало бы. Альтернативой для обмена котировками было бы пройти ENT_QUOTES до htmlspecialchars().

Вы говорите, что $i на своих собственных работах, поэтому я предполагаю, что $i является целым числом, поэтому ему не нужно указывать.

+0

+1 правильный побег. Для переменной $ i это понадобится, если это не простое целое число.Хотя это не мешает «htmlspecialchars-json_encode» целому числу; обычно лучше всего использовать одно и то же экранирование по любому значению на всякий случай. – bobince

+0

это не работает для меня ... почему ?, да $ i является целым числом ... – 2009-11-11 17:33:19

+0

Я пропустил '' '' '' '' display_image'' - вот почему? – Greg

3

При возникновении проблем с Javascript не смотрите на код сервера, который его генерирует, но посмотрите на окончательный вывод (правая страница в веб-браузере и выберите «источник просмотра» или так) и сосредоточьтесь на сгенерированном JS-коде только. Таким образом, вы бы скорее заметили недостающие котировки вокруг строковой переменной JS.

+0

+1, здравый совет – Greg

Смежные вопросы