2011-04-20 3 views
0

YUI 서식있는 텍스트 편집기를 사용하고 입력 한 텍스트를 데이터베이스에 저장하고 있습니다. 사용자는 여러 텍스트를 입력 할 수 있기 때문에 드롭 다운을 사용하여 편집 할 기존 데이터베이스 항목을 선택하거나 새 항목을 만들 수 있습니다. 이렇게하려면 AJAX를 처리하는 JS 함수를 호출하고이를 사용하여 데이터베이스에서 정보를 가져온 다음 반환 된 정보를 표시합니다. 라고PHP에서 Javascript가 AJAX를 통해 호출되지 않았습니다.

PHP 코드입니다 : 나는 오류가 발생하지 않습니다 선택 상자를 변경하고 방화범은 AJAX가 (POST 200 OK) 성공했음을보고하고 할 때

$query = "SELECT * FROM tableName WHERE id='".mysql_real_escape_string($_POST['id'])."'"; 
$result = mysql_query($query) or die(mysql_error()); 
$data = mysql_fetch_assoc($result); 
echo "<script type='text/javascript' language='JavaScript'> 
alert('HEY HEY HEY'); //Just to see if JS is happening at all 
document.getElementById('saveName').innerHTML = '$data[name]'; 
document.getElementById('editor').innerHTML = '$data[content]'; 
document.getElementById('editID').value = '$data[id]'; 
</script>"; 

응답 내가 기대하는 것입니다 :

<script type='text/javascript' language='JavaScript'> 
alert('HEY HEY HEY'); 
document.getElementById('saveName').innerHTML = 'Default'; 
document.getElementById('editor').innerHTML = 'REALLY LARGE BLOB OF TEXT'; 
document.getElementById('editID').value = '1'; 
</script> 

경고는 발생하지 않으며 내부 HTML은 변경되지 않습니다. AJAX에 의해로드 된 PHP 페이지에서 이와 같이 javascript를 호출 할 수 있습니까? 그런 다음 콜백 페이지 (가정 JQuery와)에

$query = "SELECT * FROM tableName WHERE id='".mysql_real_escape_string($_POST['id'])."'"; 
$result = mysql_query($query) or die(mysql_error()); 
$data = mysql_fetch_assoc($result); 
$json = array('data' => "$data"); 
echo json_encode($json); 

:

+0

응답 텍스트에서 ''태그를 제거해보십시오. ajax 콜백의 반환을 평가하는 경우에는 필요하지 않아야합니다. – 65Fbef05

+0

AJAX 요청 및 응답을 처리하는 JS는 무엇입니까? –

+0

또한,'eval()'에서 줄 바꿈은 아마도'unterminated string literal'이라는 에러를 던질 것입니다 - 리턴하기 전에 줄 바꿈을 제거하십시오. – 65Fbef05

답변

0

왜 그런 짓을하지 않는

jQuery.ajax(
    { 
     type: "POST", 
     url: "someurl.php", 
     dataType: "json", 
     success: function (data) {    
      $('#saveName').innerHTML = data.name; 
      $('#editor').innerHTML = data.content; 
      $('#editID').value = data.value; 
     } 
    } 
); 
0

당신과 함께 동적으로 DOM에 물건을로드 할 수 있어야한다 PHP/AJAX/뭐든. 할 수없는 일은 jquery의 라이브 명령과 같은 일부 LiveQuery를 실행하지 않고 DOM에 동적으로로드 된 HTML 요소를 수정하는 것입니다. 그러나, 때로는 동적으로로드 된 것들을 자바 스크립트에서 실행하는 것은 간단히 작동하지 않을 수 있습니다.

어떤 맥락에서이 스크립트를로드합니까? 런타임에로드되는 함수를 정의하는 것이 효과적 일 수 있습니다. 그러면 PHP에서 생성 된 코드로 함수를 호출 할 수 있습니다.

예에서, 당신의 머리 태그

<script> 
function sendAlert(input) { 
    alert(input); 
} 

function changeInnerHtml(id,innerContent) { 
    document.getElementById(id).innerHTML = innerContent; 
} 

function changeInnerValue(id,innerValue) { 
    document.getElementById(id).value = innerValue; 
} 
</script> 

안에이를 넣어 그리고 문제를 해결할 수있는 경우

$query = "SELECT * FROM tableName WHERE id='".mysql_real_escape_string($_POST['id'])."'"; 
$result = mysql_query($query) or die(mysql_error()); 
$data = mysql_fetch_assoc($result); 
echo "<script> 
sendAlert('HEY HEY HEY'); 
changeInnerHtml('saveName', '$data[name]'); 
changeInnerHtml('editor', '$data[content]'); 
changeInnerValue('editID', '$data[id]'); 
</script>"; 

확실하지 않음에 PHP 코드를 변경하려고하지만 해볼만 한 가치는있을 수 있습니다 :)

관련 문제