2012-03-13 2 views
1

내 데이터베이스에서 일부 데이터를 선택하고 있으며 내 문서에서 PHP로 반향시킬 수 있습니다. 어떻게 JavaScript에 직접 전달할 수 있습니까? 그렇지 않으면 사람들이 어떻게 이러한 것들을 처리합니까?자바 스크립트에서 MySQL로부터 검색된 데이터를 사용 하시겠습니까?

$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

"* 그게 좋지 않니?"라는게 무슨 소리 야? – 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

json_encode (초기 스크립트 요소 닫기 및 [기타] 주입 벡터에 대해 마법을 피할 수 있음) 사용시 +1. 그러나, 나는 (심지어 1-1 매핑) PHP와 JS 사이의 고정 된 API를 만들려면 데이터를 마사지 먼저 유혹 될 것입니다. –

+1

또한 $ row가 빈 배열로 초기화되었는지 확인하여 빈 객체를 얻을 수 있습니다 (자바 스크립트 오류가 발생하지 않도록). 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

또한 변수를 직접 중간에 에코 할 수 있습니다. 일부 자바 스크립트 코드. js 코드 삽입을 막기 위해이 방법을 사용한다고 가정합니다. 좋은 생각 인 것 같습니다. – octern

+0

@octern ... 예외적으로 ... 아무것도 다시 보호하지 않습니다. –

+0

@octern XSS 보호 :'echo htmlspecialchars ($ name);'페이지의 인라인 스크립트가 마음에 들지 않습니다. 이 메소드를 사용하면 포함 된 js-file의 메소드로 이름을 처리 할 수 ​​있습니다. 예'/*external.js*/var nameBehavior = function() {alert ($ ('# name'). text()); }' – cetver

0

$ x를 그것을해야하는 문자열 (또는 정말, 단지 유형을 전달하기 전에 호환되어 있는지 확인 아무것도)

$x = phpvar 

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

입니다. 스크립트 <> 태그를 잊지 마라. 그래서 나는 아마 내가 모든 페이지에 자바 스크립트를 던지는 것을 막기 위해 그들을 삽입시키지 않을 것이다.

관련 문제