[JQUERY] $ .getjson 함수에서 변수를 어떻게 반환 할 수 있습니까?
JQUERY$ .getjson 함수에서 변수를 어떻게 반환 할 수 있습니까?
해결법
-
1.그래, 당신의 코드에주의를 기울이지 않았기 때문에 이전 답변이 작동하지 않습니다. :)
그래, 당신의 코드에주의를 기울이지 않았기 때문에 이전 답변이 작동하지 않습니다. :)
문제는 익명의 함수가 콜백 함수이기 때문입니다. 즉, GetJSON은 일부 불확정 시점에서 반환 할 비회원 작업이므로 변수의 범위가 익명의 함수 (즉, 폐쇄) 외부에 있더라도 당신이해야한다고 생각하는 가치가 없습니다.
var studentId = null; j.getJSON(url, data, function(result) { studentId = result.Something; }); // studentId is still null right here, because this line // executes before the line that sets its value to result.Something
GetJSON 호출에 의해 설정된 StudentID의 값으로 실행하려는 모든 코드는 해당 콜백 함수 내에서 발생하거나 콜백이 실행 된 후에 발생해야합니다.
-
2.C #와 유사한 범위를 달성하려면 비동기 작업을 비활성화하고 데이터 유형을 JSON으로 설정하십시오.
C #와 유사한 범위를 달성하려면 비동기 작업을 비활성화하고 데이터 유형을 JSON으로 설정하십시오.
var mydata = []; $.ajax({ url: 'data.php', async: false, dataType: 'json', success: function (json) { mydata = json.whatever; } }); alert(mydata); // has value of json.whatever
-
3.위의 모든 것보다 더 간단합니다. 이전에 설명 된대로 $ .getjson은 문제를 일으키는 비동기를 실행합니다. 모든 코드를 $ .ajax 메소드로 리팩터링하는 대신 기본 .js 파일의 맨 위에 다음을 삽입하여 비동기 동작을 비활성화합니다.
위의 모든 것보다 더 간단합니다. 이전에 설명 된대로 $ .getjson은 문제를 일으키는 비동기를 실행합니다. 모든 코드를 $ .ajax 메소드로 리팩터링하는 대신 기본 .js 파일의 맨 위에 다음을 삽입하여 비동기 동작을 비활성화합니다.
$.ajaxSetup({ async: false });
행운을 빕니다!
-
4.다른 기능에 대한 위임을 원하시면 jQuery를 $ .fn으로 확장 할 수 있습니다. 표기법 이렇게 말합니다.
다른 기능에 대한 위임을 원하시면 jQuery를 $ .fn으로 확장 할 수 있습니다. 표기법 이렇게 말합니다.
var this.studentId = null; $.getJSON(url, data, function(result){ $.fn.delegateJSONResult(result.Something); } ); $.fn.delegateJSONResult = function(something){ this.studentId = something; }
-
5.
var context; $.ajax({ url: 'file.json', async: false, dataType: 'json', success: function (json) { assignVariable(json); } }); function assignVariable(data) { context = data; } alert(context);
-
6.HMM, 학생이 학생의 부동산으로 물체를 직렬화 한 경우 :
HMM, 학생이 학생의 부동산으로 물체를 직렬화 한 경우 :
var studentId; function(json) { if (json.length > 0) studentId = json[0].StudentId; }
그러나 학생들이 학생들을 반환하는 경우 :
var studentId; function(json) { if (json.length > 0) studentId = json[0]; }
편집 : 또는 어쩌면 .length도 필요하지 않습니다 (JSON에서만 일반 컬렉션 만 반환됩니다).
편집 # 2,이 작품, 방금 테스트했습니다.
var studentId; jQuery.getJSON(url, data, function(json) { if (json) studentId = json; });
# 3을 편집하십시오. 실제 JS가 사용 된 실제 JS입니다.
$.ajax({ type: "POST", url: pageName + "/GetStudentTest", contentType: "application/json; charset=utf-8", dataType: "json", data: "{id: '" + someId + "'}", success: function(json) { alert(json); } });
ASPX.vb에서 :
<System.Web.Services.WebMethod()> _ <System.Web.Script.Services.ScriptMethod()> _ Public Shared Function GetStudentTest(ByVal id As String) As Integer Return 42 End Function
from https://stackoverflow.com/questions/31129/how-can-i-return-a-variable-from-a-getjson-function by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] jQuery : Ajax를 통해 모달 대화 상자 내용을로드합니다 (0) | 2020.11.03 |
---|---|
[JQUERY] Twitter Bootstrap 플러그인을 확장하는 방법 (0) | 2020.11.03 |
[JQUERY] 이전 요청에 대한 이전 Ajax 요청을 중단합니다 (0) | 2020.11.02 |
[JQUERY] $ .focus () 작동하지 않습니다 (0) | 2020.11.02 |
[JQUERY] 언제 jQuery 함수에서 반환을 사용해야합니까? (0) | 2020.11.02 |