2016-08-16 5 views
1

Я создаю несколько динамически динамически, и мне нужно передать некоторые переменные PHP в функцию JavaScript с помощью метода onclick.Передача строковых переменных PHP в функцию Javascript с помощью кнопки

Этот код работает отлично по большей части, но если переменные содержат двойные или одинарные кавычки, он не может вызвать функцию.

Я попытался использовать htmlspecialcharacters с ENT_QUOTES, который исправил проблему с помощью двойных кавычек, но одинарные кавычки по-прежнему вызывают ее.

<button id="modalBtn" type="button" onclick="ShowProduct('<?php echo $title ?>', '<?php echo $description ?>', '<?php echo $img ?>');">View Details</button> 

Любые предложения относительно того, как исправить это или есть лучший способ сделать это?

ответ

1

Я предлагаю вам создать объект JSON из вашего Варса и передать его в качестве аргумента, что-то вроде:

<button 
    id="modalBtn" 
    type="button" 
    onclick="ShowProduct(<?php echo json_encode(array($title, $description, $img))?>);"> 
     View Details 
</button> 

Или (для более читаемых ключей)

<button 
    id="modalBtn" 
    type="button" 
    onclick="ShowProduct(<?php echo json_encode(array('title' => $title, 'descr' => $description, 'img' => $img))?>);"> 
     View Details 
</button> 

И ваша ShowProduct функции, которую вы можете определить как:

function ShowProduct(params) { 
    console.log(params); 

    // do other stuff 
} 

Обновление :

если ваши вары уже в массиве вы можете:

// pass this array: 
ShowProduct(<?php echo json_encode($your_array)?>) 

// fill new array with required keys only 
ShowProduct(<?php echo json_encode(array($your_array['title'], $your_array['description'], $your_array['img']))?>) 
+0

Что делать, если переменные уже находятся в массиве? $ value ['title'] – ijason03

+0

Обновлен мой ответ. –

0

Я хотел бы предложить лучший способ передачи переменных в JavaScript с щелчком кнопки или любое другое событие.

Добавьте аргумент передачи в качестве атрибутов данных в кнопку.

Пример:

<button id="b1" type="button" data-id="123" data-name="xyz" data-size="m" onClick="doSomething()"> 

И в PHP скрипте или в Ajax запроса вы можете получить атрибуты, как:

var id = $("#b1").attr("data-id"); 
var name = $("#b1").attr("data-name"); 

И использовать те в Ajax вызова для PHP скрипт.

Надеюсь, это то, что вы искали.

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