2014-02-06 2 views
3

Я пытаюсь передать массив данных из php в java-скрипт для события «onclick». Я делаю это, преобразовывая данные массива в строку JSON, чтобы проанализировать его обратно в js-функции и работать с ним.Передача php-строки JSON (с qoutes) в функцию onclick

Проблема заключается в том, что строка JSON содержит двойные кавычки, поэтому возникает ошибка, так как двойные кавычки разбивают строку html (Uncaught SyntaxError: Unexpected token ILLEGAL). Я видел несколько вопросов, подобных этому, но не нашел решения для того, что мне нужно, или, может быть, я не понял правильного решения. Поэтому я рассказываю об этом с моим конкретным случаем.

<?php 
    ..some php code here.. 
    $aData = array("You","Me",76,array(3,6)); 
    $sJSONstr = json_encode($aData); 
?> 

<input type="button" name="formSubmit" value="Delete" onclick="analyze('<?php echo $sJSONstr; ?>')"> 

<?php 
    ..some php code here.. 
?> 

и функция JS выглядит следующим образом:

function analyze(i_sInputDataJSONStr) 
{ 
var aInputData = JSON.parse(i_sInputDataJSONStr); 

    .. So something with the input data array.. 
} 

ответ

3

Используйте одинарные кавычки для OnClick атрибутов вместо двойных кавычек. Одиночные кавычки одинаково действуют как двойные кавычки.

Еще одна вещь, поскольку у вас уже есть данные в формате JSON, нет необходимости указывать ее как строку в вызове функции analyze, поскольку ваши данные JSON являются допустимым массивом JavaScript (это то, что JSON означает: Обозначение объекта JavaScript). Следовательно, вам не нужно разбирать входную строку в объявлении функции analyze.

Рассмотрим следующий пример, это вполне допустимый код.

<?php 
    $arr = ["Hello", "World"]; 
    $json = json_encode($arr); // $json = '["Hello","World"]' 
?> 
<div id="myDiv" onclick='doSomething(<?php echo $json; ?>)'>Click me</div> 

<script type="text/javascript"> 
function doSomething(data){ 
    for (var i = 0; i < data.length; i++) { 
     alert(data[i]); 
    } 
} 
</script> 
+0

Как вы можете так выразиться? в 'onclick =" анализировать ('') "' он уже дает одну цитату внутри 'onclick()' –

+0

Спасибо, но мне также нужны одинарные кавычки вокруг , чтобы он был строкой, а не объектом. Итак, как мне это сделать? – user3198805

+0

@ Kannan, пожалуйста, см. Мой обновленный ответ. Поскольку его данные JSON, нет необходимости ставить его в виде строки (и разбора ее снова). –

0

создать яваскрипта строку и передать его:

<script type="text/javascript"> 
var myjson = '<?php echo $sJSONstr; ?>'; 
</script> 

, а затем:

onclick="analyze(myjson)" 
+0

Извините за downvote, я не читал ваш ответ достаточно близко. –

-1
<input type="button" name="formSubmit" value="Delete" onclick='analyze(<?php echo $sJSONstr?>)'> 

Заменить двойные кавычки на одинарные кавычки в OnClick = ''; Работал как очарование для меня.

+0

Этот ответ уже дан и принят – Bowdzone

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