2014-09-28 2 views
0

Я пытаюсь передать как строку, так и целое число в одну и ту же функцию, но у меня проблема с кавычками. Я понял, что ошибка находится в части echo $q->info, я должен использовать двойные котировки для этого кода.JavaScript, передающий строку и целое число от PHP в функцию

Может кто-нибудь помочь мне написать это $q->info, но для получения реальной стоимости не $q->info?

Мой код до сих пор

<td><a href="javascript:add(<?php echo $q->info?>,<?php echo $q->id?>)">Edit</a></td> 

и JS функционируют

function add(var,var2) 

Может кто-нибудь помочь мне с этим?

+0

Использование _JSON_ в качестве посредника. Это сэкономит вам много головной боли. –

ответ

0

Вам нужно указать строку.

<td><a href="javascript:add('<?php echo $q->info?>',<?php echo $q->id?>)">Edit</a></td> 

Кроме того, var является/имя аргумента недействительным переменной (идентификатор).

+0

Ваш атрибут теперь выглядит как 'HREF =«JavaScript: добавить (»' Это не будет работать – Quentin

+0

близко, но не исправить это правильный код Edit

+0

@Quentin вы правы –

1

У вас есть переменная PHP. Чтобы преобразовать его в строковое представление литерала JavaScript, используйте json_encode. Чтобы было безопасно вставить значение атрибута HTML, используйте htmlspecialchars.

<td><a href="javascript:add(<?php echo htmlspecialchars(json_encode($q->info)); ?>,<?php echo htmlspecialchars(json_encode($q->id)); ?>)">Edit</a></td> 

Тем не менее, было бы лучше, чтобы написать свой код, чтобы следовать принципам Progressive Enhancement и Unobtrusive JavaScript.

<td> 
    <form action="edit" method="post"> 
     <input type="hidden" name="info" value="<?php echo htmlspecialchars($q->info); ?>"> 
     <input type="hidden" name="id" value="<?php echo htmlspecialchars($q->id); ?>"> 
     <input type="submit" value="edit"> 
    </form> 
</td> 

А потом что-то вроде:

document.querySelector('form').addEventListener("submit", function (evt) { 
    evt.preventDefault(); 
    add(this.elements.info.value, this.elements.id.value); 
}); 
Смежные вопросы