2012-03-13 4 views
1

Я выбираю некоторые данные из своей базы данных, и я могу повторить его с PHP в моем документе. Как я могу передать его на JavaScript, или это не так, как люди справляются с этими вещами?Использовать данные, полученные из MySQL в JavaScript?

Вот как я и эхо:

$q=mysql_real_escape_string($_GET['q']); 
$query="SELECT * FROM contacts WHERE id = '".$q."'"; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)) { 
    echo "Name: " . $row['first'] . " <br />"; 
    echo "Surname: " . $row['last'] . " <br />"; 
} 
mysql_close(); 
+0

Что вы подразумеваете под названием «* it its not duable *»? – Lion

+0

Просто используйте JSON для кодирования данных в элемент сценария. Это также не позволит допускать различные инъекционные атаки, указанные выше (и некоторые ответы). –

+0

@pst json_encode() превращает этот [{"id": "item-1" в [{\ "id \": \ "item-1 \",. Не могли бы вы проверить этот вопрос? Http://stackoverflow.com/questions/9674305/saving-localstorage-key-into-mysql – jQuerybeast

ответ

2

Это быстрый и простой способ получить эту установку.

echo("<script>"); 
echo("var myJSvar = " . json_encode($row) . ";"); 
echo("</script>"); 

Тогда в любом JS оттуда вы можете использовать myJSvar;

alert(myJSvar['first'] + " " + myJSvar['last']); 
+0

+1 для использования json_encode (что также магически предотвращает закрытие раннего скрипта и [другие] инъекционные векторы). Тем не менее, у меня возникнет соблазн сначала массировать данные (даже если сопоставление 1-1), чтобы создать фиксированный API между PHP и JS. –

+1

Также убедитесь, что $ row инициализирован как пустой массив, поэтому вы получите пустой объект (так что вы не будете метать ошибки JavaScript). Обратите внимание, что вы также можете использовать myJSvar.first для доступа к одному и тому же параметру. – Bram

+0

все используют эхо? – jQuerybeast

0
<div id="name"> 
<?php echo $name; ?> 
</div> 

<script type="text/javascript"> 
//jquery example 
$(document).ready(function(){ 
    alert($('#name').text()); 
}); 
</script> 
+0

Вы также можете просто отбросить переменную непосредственно в середину некоторый код javascript. Я предполагаю, что вы делаете это так, чтобы защитить от инъекции js-кода, что кажется хорошей идеей. – octern

+0

@octern За исключением ... он больше ничего не защищает. –

+0

@octern XSS protection: 'echo htmlspecialchars ($ name);' Мне не нравится встроенный скрипт на странице. С помощью этого метода вы можете обрабатывать имя по методу в включенном js-файле. Пример '/*external.js*/var nameBehavior = function() {alert ($ ('# name'). Text()); } ' – cetver

0

$ х является строка (или что-нибудь еще на самом деле, просто убедитесь, что типы совместимы перед передачей их)

$x = phpvar 

echo "<script type='text/javascript'> 
function Javascript_function(){ 
var passed = ".$x."}</script>"; 

Это должно сделать это. Не забывайте сценарий <> теги, поэтому не позволяйте мне вставлять их, возможно, чтобы я не просто бросал javascript на каждую страницу.

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