2012-05-08 2 views
-1

в PHP Я создаю этот объект, который я конвертировать в формат JSON и отправить клиенту JS:выделяющиеся котировки выпуск

$arr = array("img"=>"http://www.myDomain.com/imgs/pic_1.jpg","data"=>"<p>This is a paragraph <a href='#' onclick='MyFunction('myParameter');'>My Link</a></p>"); 

Я думаю, что я делаю что-то неправильно с кавычками (проверить вызов функции), но на момент, однажды введенный в мой HTML, MyFunction никогда не вызывается. Каков правильный способ избежать цитат в этой ситуации?

EDIT: это результирующий JSON:

{"img":"http:\/\/www.myDomain.com\/imgs\/pic_1.jpg","data":"<p>Paragraph: <a href='#' onclick='localFunction('parameter');'>Link<\/a><\/p>","length":2} 
+0

Как выглядит получившийся JS? Что вы делаете с данными? –

+0

Какой объект? Это массив. Вы также опускаете наиболее подходящий фрагмент кода: преобразование JSON. Не говоря уже о том, что JSON не JavaScript: он не может содержать код. –

+1

@DonCallisto: это не имеет смысла, а также является ложным. – Ashe

ответ

1
<a href='#' onclick='MyFunction('myParameter');'> 

Вы одинарные кавычки внутри «OnClick», но «OnClick» сам ограничен в одинарные кавычки.

Try:

$arr = array("img"=>"http://www.myDomain.com/imgs/pic_1.jpg","data"=>"<p>This is a paragraph <a href='#' onclick=\"MyFunction('myParameter');\">My Link</a></p>"); 
1

У вас есть неисправная вложенность цитаты в onclick='MyFunction('myParameter');'. Используйте спасся двойные кавычки вместо:

onclick=\"MyFunction('myParameter');\" 
1

Ваше упоминание о JSON является отвлекающим маневром.

Посмотрите на код. Я положила начало и конец значения атрибута:

onclick='MyFunction('myParameter');'> 
     ^  ^

Вы либо должны использовать различные цитаты, которые должны быть экранированы, потому что они находятся внутри PHP строку с разделителями по этому типу цитаты:

onclick='MyFunction(\"myParameter\");'> 

... или вам нужно использовать HTML-сущности:

onclick='MyFunction(&quot;myParameter&quot;);'> 

Вообще говоря, хотя, вы шо uld полностью исключает внутренние атрибуты событий и предпочитает привязку событий JavaScript (часто с делегированием событий, поэтому вам не нужно связывать события каждый раз, когда вы добавляете новые элементы в DOM).

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