Передача объектной строки в javascript-функцию - PullRequest
1 голос
/ 03 февраля 2010

Я пытаюсь передать такую ​​строку:

{"key":["value"],"key2":undefined,"key3":undefined,"key4":undefined,"key5":"value"}

в функцию javascript, например:

<a href="#" onClick="myFunction(myString);">

, но не могу получить правильный выходЕсть ли способ передать эту строку объекта в функцию или мне нужно что-то преобразовать?

Привет, Select0r

Ответы [ 4 ]

1 голос
/ 04 февраля 2010

Я нашел решение, Наим Сарфраз поставил меня на правильный путь - он не выиграет конкурс красоты, но он работает:

Как я могу выполнить PHP в контексте, в котором я нахожусь (ноIE6 игнорировал бы Javascript), я сделал пару замен в одинарных / двойных кавычках с помощью PHP.

$data = stripslashes(unserialize($data));
$data = addcslashes($data, "'");
$data = str_replace('"', "'", $data);

Это удалит все косые черты, добавит косые черты только для одинарных кавычек и, наконец, заменит двойные кавычки одиночными.

Теперь myString находится в состоянии, которое можно передать в функцию Javascript в onclick без конфликтов кавычек:

<a href="#" onClick="myFunction(<?php print $data; ?>);">

Спасибо за ваш вклад!

1 голос
/ 03 февраля 2010

Как сказал Наим, вы можете заключить строку в одну кавычку. Разница между одинарной и двойной кавычкой заключается в следующем:

одинарные кавычки:

  • Может содержать двойные кавычки без остановки строки
  • Не может содержать такие символы, как разрывные строки
  • Может содержать одинарные кавычки через \'

двойные кавычки:

  • Может содержать одинарные кавычки без остановки строки
  • Может содержать разрывную строку и другие специальные символы
  • Может содержать двойные кавычки через \"
1 голос
/ 03 февраля 2010

попробовать:

var myString = '{"key":["value"],"key2":undefined,"key3":undefined,"key4":undefined,"key5":"value"}';


EDIT:

В свете вашего недавнего комментария я вернулся в браузер и попробовал это (работает для меня):

<a href="#" onClick="myFunction({'key':['value'],'key2':undefined,'key3':undefined,'key4':undefined,'key5':'value'});">

Изменение означает, что оно больше не передается как строка, а как параметр объекта в myFunction.

0 голосов
/ 04 февраля 2010

Если вы можете сгенерировать код непосредственно перед этим <a> элементом, вы можете попробовать это:

<script type="text/javascript">
var myObj = {"key":["value"], "key2":undefined, "key3":undefined, "key4":undefined, "key5":"value"};
</script>
<a href="#" onClick="myFunction(myObj)">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...