jQuery의 AJAX 지연 기능을 사용하여 구문 분석 및 사용할 수있는 JSON 문자열을 반환하려고하는데 모서리에 자신을 코딩하고있을 수 있습니다. 논리를 망쳤다. AJAX 호출의 결과가 .done()
콜백 에 반환 될 것으로 예상되었으며 이들은입니다. 나는 일단 함수의 나머지 부분에서 사용하기 위해 결과를 반환 할 수 있다고 생각했습니다. 나는 정말 명백하고 단순한 것을 놓치고 있다는 것을 압니다. 나는 그것이 무엇인지에 대해 손가락질 할 수 없습니다..done()을 잘못 사용하고 있습니다. 예상대로 값을 반환하지 않습니다.
다음은 테스트 모드에서 stil 함수의 초기 코딩입니다. JSON은 .done()
함수에서 올바르게 반환되지만 함수 외부에서 사용할 수는 없습니다.
checkUserRoles = function(){
var userRole, foo, roles, i$, len$, i;
userRole = roleChecker();
foo = userRole.done(function(data){
var bar;
bar = foo.responseText; // correctly returns the JSON data
console.log(bar);
return bar; // is undefined, this is the problem
});
if (userRole !== false) {
userRole = jsonDecode(userRole);
} else {
userRole = "";
}
roles = userRole.split(',');
$("if-user-role").hide();
for (i$ = 0, len$ = roles.length; i$ < len$; ++i$) {
i = roles[i$];
$("if-user-role[data-role~=" + i + "]").show();
}
return true;
};
this.roleChecker = function(){
var retVal, allCookies, i$, len$, thecookie, hashedCookie, theHash, userHash, post;
retVal = "";
allCookies = document.cookie.split(';');
for (i$ = 0, len$ = allCookies.length; i$ < len$; ++i$) {
thecookie = allCookies[i$];
if (thecookie.indexOf('userHash') >= 0) {
hashedCookie = thecookie;
theHash = hashedCookie.split('=');
userHash = theHash[1];
}
}
post = $.ajax({
url: '/services/check_hash.php',
data: {
hash: userHash
},
type: "POST"
});
return post;
};
여기서 볼 수있는 코드는 광범위하게 사용하는 LiveScript 컴파일 결과입니다. 저는 LiveScript가 최종 결과에 영향을 미치지 않는다고 생각합니다. 적절한 JavaScript/jQuery 결과물을 얻으려면 많은 노력을해야했습니다.
참고 : userRole
로 문 전에 기능을 만들려고 노력으로 원래 초기 테스트를 위해 하드 코딩 된 경우이 더 많거나 적은 첫 번째 패스는 foo
가 이후에 전달되지 않는 코드에 있기 때문에 더 역동적 인.
foo.responseText
또는 bar
을 후속 절차에서 어떻게 사용할 수 있습니까? if
부터 시작하여 .done()
함수에서 조건부로 처리해야합니까?
찬성 투표를하면 것을 인정에 대해 그것을 잘못 사용하고 그것이해야하는 방식으로 작동하지 않는다는 것을 말하지 않는다. – SeinopSys
가까운 투표가 제거 된 이유를 모르지만 이것은 http : // stackoverflow와 중복된다.co.kr/questions/14220321/ajax-call에서 응답하는 방법 –