>

여기에 제시된 권장 사항을 사용하고 있습니다 ( http://www.odetocode.com /articles/473.aspx )를 사용하여 시뮬레이션 된네임 스페이스및 프로토 타입을 사용하여 JavaScript AJAX 웹 채팅 시스템을 작성하십시오.

내 프로토 타입 메소드 중 하나에서jQuery에서$. ajax메소드를 호출합니다. 내가하고 싶은 일은 반환 된 JSON 데이터를 JavaScript 웹 채팅 네임 스페이스 내의 메소드에 전달하는 것입니다.

문제는 JavaScript 웹 채팅 인스턴스를 만들었 기 때문에 발생하는 것 같습니다. 인스턴스를 통해 처리해야하기 때문에 내부에서 메서드를 직접 호출 할 수 없습니다.

아래 코드의 핵심 부분은

success: function(data, textStatus) {
  this.GetUpdate_Success(data)
},

우리가 $.ajax () 메소드 안에 있기 때문에더 이상 WebchatV3 객체를 참조하지 않는다고 생각합니다.

전체 JavaScript 코드는 다음과 같습니다 :

/// <reference path="/JavaScript/jquery-1.3.2-vsdoc2.js" />
// Simulated 'namespace'
var AvonAndSomerset = {}
// Chatroom run time data
AvonAndSomerset.WebchatV3 = function(memberId, passcode) {
  this.Members = new Array(); // Members in the chatroom
  this.Questions = new Array(); // The questions queue in the chatroom
  // Details about the current user
  this.currentMember = new AvonAndSomerset.WebchatV3.Member(memberId, passcode, null, null, null, null, null);
  // Set-up AJAX defaults
  $.ajaxSetup({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json"
  });
}
AvonAndSomerset.WebchatV3.prototype = {
    // Get latest Member,Quetsion,Transcript and Room data from server
    GetUpdate: function(StartUp) {
      $.ajax({
        url: "JSON.aspx/Members_GetChanges",
        data: "{ MemberID: " + this.currentMember.memberId + ", Passcode: \"" + this.currentMember.passcode + "\", ReturnAll: " + StartUp + " }",
        success: function(data, textStatus) {
          this.GetUpdate_Success(data)
        },
        error: function(result) {
          alert('Members_GetChanges() failed: ' + result.responseText);
        }
      });
    },
    // Callback - on success of GetUpdate()
    GetUpdate_Success: function(data) {
      alert('The AJAX call was successful!');
    },
    // Does the MemberID exist in the local array?
    Members_DoesExist: function(MemberID) {
      alert('Searching for ' + MemberID);
      alert(this.Members.length);
    }


  • 답변 # 1

    이 문제를 해결하는 가장 쉬운 방법은 this 를 참조하는 변수를 만드는 것입니다.  필요한 적절한 범위에서. 와이즈 비즈  범위는 자바 스크립트에서 다르게 작동하며 대부분의 언어에서 작동합니다.이 경우 함수에 전달되는 객체를 참조합니다.

    this
    
    

  • 답변 # 2

    시도

    // Get latest Member,Quetsion,Transcript and Room data from server
    GetUpdate: function(StartUp) {
        //here
        var self = this;
        $.ajax({ url: "JSON.aspx/Members_GetChanges",
            data: "{ MemberID: " + this.currentMember.memberId + ", Passcode: \"" + this.currentMember.passcode + "\", ReturnAll: " + StartUp + " }",
            success: function(data, textStatus) {
                self.GetUpdate_Success(data)
            },
            error: function(result) {
                alert('Members_GetChanges() failed: ' + result.responseText);
            }
        });
    },
    
    

    작동 할 수 있습니다.

    success: function(data, textStatus) { AvonAndSomerset.WebchatV3.GetUpdate_Success(data) },

관련 자료

  • 이전 SQL Server 범위 인덱싱 아이디어
  • 다음 파이썬에서 정규 표현식을 사용하여 문자열에서 소수점 숫자와 백분율을 추출하는 방법