2009-08-20 2 views
0

나는 코멘트를 표시하는 웹 페이지를 가지고 있으며, 사용자는 부적절한 코멘트를보고하기 위해 '플래그'링크를 클릭 할 수 있습니다.AJAX에서 HTML 함수를 실행 - HTML 응답

플래그 링크를 클릭하면 AJAX 및 innerHTML을 사용하여 설명 아래에 드롭 다운 상자를 이유 코드와 함께 표시합니다 (예 : 스팸, 불쾌감, 주제와 관련이없는 것, 취소 버튼 등이 있습니다.

사용자가 제출을 클릭하면 다른 AJAX 요청을 사용하여 데이터베이스가 업데이트되는 PHP 파일에 응답을 보내고 페이지를 다시로드하지 않고 "감사합니다"라는 메시지가 나타납니다. 나는 기본적으로 드롭 다운 상자가 다른 AJAX 요청을 사용하여 "감사합니다"로 대체되도록 표시하는 DIV를 원합니다.

문제가있는 곳입니다. 첫 번째 AJAX 요청의 HTML 응답 내에서 AJAX 요청을 실행할 수없는 것 같습니다. JavaScript 함수가 실패합니다. 간단한 경고 ('hello world')조차도 작동하지 않습니다. 첫 번째 AJAX 요청을 호출하는 주 페이지에 JavaScript 함수를 배치하고 첫 번째 AJAX 요청의 HTML 응답으로 표시되는 PHP 파일에 배치하는 방법을 시도했지만 어떤 행운도 없었습니다. 호출 될 때 실행되지 않습니다.

외부에서 PHP 파일을로드하면 모든 것이 잘 작동하므로 JavaScript가 정확한지 알고 있습니다. PHP 응답 파일을 HTML 응답 DIV에로드 한 다음 JavaScript를 호출하면 작동하지 않습니다.

모든 것을 요약하면 AJAX 요청의 HTML 응답에서 어떻게 JavaScript 함수를 실행할 수 있습니까?

편집 : 여기에 내가 뭘 원하는지의 샘플은 다음과 같습니다

이 사람이 신고 링크를 클릭 할 때 DIV를 채우는 AJAX의 일부입니다 XMLHTTP의

xmlhttp.onreadystatechange=function(){ 
if (xmlhttp.readyState==4) 
{ 
    document.getElementById(whichdiv).innerHTML=xmlhttp.responseText; 
} 
}; 

값. 에서 responseText이 외부 파일에서 온다 :

<input type="hidden"/> 
<script type="text/javascript" language="javascript"> 
function displayalert() 
{ 
    alert ('Hello World!'); 
} 
</script> 

<form name="myform" id="myform"> 
<input type="text" name="myfield" value="teststring"/><br/> 
<input type="button" name="button" value="Submit" 
    onclick="displayalert();"/> 
</form> 

참고 : <input type="hidden"/> 위에서 내가 http://msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx 떨어져 발견 제안에서 비롯됩니다.

사용자가 버튼을 클릭하면 javascript displayalert() 함수가 실행되지 않습니다. 경고 상자가 절대로 나오지 않습니다. innerHTML을 사용하여 파일을 호출하는 대신 외부 적으로 파일을로드하면 스크립트가 정상적으로 작동합니다.

xmlhttp.responseText에 JavaScript 코드가 포함되어 있습니까?

+0

가 작동하지 않는 코드를 게시 해 봅니다. 당신이하려고하는 것을 말하기는 어렵습니다. – noah

+0

감사합니다. 위의 코드로 원래 게시물을 업데이트했습니다. – andrewl85

답변

0

은 브라우저에 따라 다릅니다. IE에서 scriptEval을 지원하지 않습니다. html에는 ajax가로드되어 있으므로 HTML에 스크립트 블록이 있으면 호출되지 않습니다.

Firefox는 script eval을 지원합니다.

내가 일반적으로하는 일은 입력에 json을 밀어 넣은 다음 브라우저가 scriptEval을 지원하는지 확인하고, 그렇지 않으면 json을 당기고 eval로 가져 와서 json을 전달하는 메서드를 호출합니다.

브라우저가 scriptEval을 지원하는 경우 json과 동일한 메소드에 대한 호출을 포함하는 스크립트 블록도 포함합니다.

당신은 또한이 글을 읽을 할 수 있습니다 : http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html

+0

의견에 감사드립니다. 반환 된 AJAX 코드에 JavaScript 함수를 포함하는 대신 주 PHP 파일에 JavaScript 함수를 포함하여이 작업을 수행 할 수있었습니다. 그런 다음 반환 된 AJAX 코드에서 함수를 호출 할 수있었습니다. – andrewl85

관련 문제