Ajax 호출을 사용하여 일부 JavaScript를 String으로 가져 왔습니다. onSuccess 메소드에서이 코드를 평가하고 싶습니다. JavaScript 코드에는 함수 선언이 있습니다. 이러한 모든 기능은 평가 이후에 액세스 할 수 있어야합니다.범위와 평가 설명
나는 가능한 한 작은 예를 만들었습니다. (JFiddle에서는 성공적인 Ajax 호출을 만들 수 없으므로 예제의 onFailure 메서드에서 문제가 발생합니다.)
는 여기에서 예를 찾을 수 있습니다 http://jsfiddle.net/ubXAV/6/
모든 브라우저에서 작동하고 볼 수있는 예 (불행하게도,이 IE에서 JSFiddle에서 작동하지 않습니다). 나는 아래의 질문을 언급하는 몇 줄을 표시했다. 여기에 코드를 다시입니다 :
function evalScript(script)
{
that.eval(script); //1.
}
var that = this;
// AJAX-Call - GadgetActionServlet
new Ajax.Request("THISWILLFAIL.com", {
method: 'post',
onSuccess: function(ajaxResponse) {
alert("success");
},
onFailure: function(){
var script = "{function sayHello(){alert('Hello');}}";
//that.eval(script); //not working in IE 2.
evalScript(script); //working in all browsers
}
});
내가 자바 범위 및 컨텍스트에 대한 인터넷에 많이 읽을 수 있지만 난 그냥 여기에 행동을 설명 할 수 없다 : 나는 평가 호출해야 할 이유
을 에 "그"? 인터넷에서 많은 정보원에 따르면 전 세계적으로 정의 된 기능의 맥락은 가장 글로벌 한 맥락입니다. (여기에 창이 있어야합니다). 그리고 eval을 통해 평가 된 코드는 eval 함수를 호출하는 컨텍스트에서 실행되어야합니다.
Ajax 호출에 대한 새로운 글로벌 컨텍스트가 있다고 가정하면 (즉,?) 왜 evalScript 함수에 액세스 할 수 있지만 여기서 직접 스크립트를 평가할 수는 없습니다.
내가 가진 전반적인 질문은 다음과 같습니다. 어떤 규칙이 eval 사용에 적용됩니까? 컨텍스트와 관련된 내 기능은 어디에 있습니까? 그리고 : 예제에서와 같이 프로토 타입 Ajax 호출에는 자체 전역 객체가 있습니까?
jsFiddle에서 실제로 AJAX 호출을 성공적으로 수행 할 수 있습니다.이 [참조 페이지] (http://doc.jsfiddle.net/use/echo.html)를 참조하십시오. –
단어 'I'는 영어로 대문자로 표기됩니다. –