복붙노트

[JQUERY] $ .getjson 함수에서 변수를 어떻게 반환 할 수 있습니까?

JQUERY

$ .getjson 함수에서 변수를 어떻게 반환 할 수 있습니까?

해결법


  1. 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. 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. 3.위의 모든 것보다 더 간단합니다. 이전에 설명 된대로 $ .getjson은 문제를 일으키는 비동기를 실행합니다. 모든 코드를 $ .ajax 메소드로 리팩터링하는 대신 기본 .js 파일의 맨 위에 다음을 삽입하여 비동기 동작을 비활성화합니다.

    위의 모든 것보다 더 간단합니다. 이전에 설명 된대로 $ .getjson은 문제를 일으키는 비동기를 실행합니다. 모든 코드를 $ .ajax 메소드로 리팩터링하는 대신 기본 .js 파일의 맨 위에 다음을 삽입하여 비동기 동작을 비활성화합니다.

     $.ajaxSetup({
       async: false
     });
    

    행운을 빕니다!


  4. 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. 5.

    var context;
    $.ajax({
      url: 'file.json',
      async: false,
      dataType: 'json',
      success: function (json) {   
        assignVariable(json);
      }
    });
    
    function assignVariable(data) {
      context = data;
    }
    alert(context);
    

  6. 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
    
  7. from https://stackoverflow.com/questions/31129/how-can-i-return-a-variable-from-a-getjson-function by cc-by-sa and MIT license