2012-04-11 3 views
1

업데이트 된 질문을 받기 :속성 값 JQuery와

$(this).attr("EmployeeId", 'A42345'); 

$.ajax({ 
     type: "POST", 
     url: url, 
     data: "{EmployeeId: '" + id + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
     var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; 

     var o = obj[$(this).attr("EmployeeId")]; //<<<<undefined 

최종 업데이트 나는이 같은 DOM 뭔가 withitn 직원 ID를 얻기 위해 노력하고

:

var o = obj[$(this).attr("EmployeeId")]; 

하지만 점점 undefined

내가 디버그 할 때

$(this)[0].data 

    data "{EmployeeId: 'A42345'}"  

여기 내 소스 코드 :

$.ajax({ 
      type: "POST", 
      url: url, 
      data: "{EmployeeId: '" + id + "'}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
     success: function (response) { 
        var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; 

        var o = obj[$(this).attr("EmployeeId")]; //<<<<undefined 
+0

아직 '이'가 무엇인지 알기에 충분한 컨텍스트를 제공하지 않았습니다. 당신이 그것을 할당 할 수 있다면, 나는 나의 첫 번째 대답으로 정확하다고 생각하고있다. 내가 제안한 것을 시도 했니? –

답변

2

this은 당신이 준 예에서 함수를 참조되고 난 다음을 참조하십시오. 그러므로 선택자가 아무 것도 못합니다.

클릭 핸들러 또는 다른 유형의 이벤트 핸들러에서 ajax 함수를 호출하고 있다고 생각합니다.

첫 번째 함수의 변수에 $ (this)를 할당하고 성공 콜백에서 해당 변수를 참조하십시오. 하지만 도움이 될 코드의 자세한 내용을 게시

$(el).click(function() { 
    var $this = $(this); 
    $.ajax({ 
     type: "POST", 
     url: url, 
     data: "{EmployeeId: '" + id + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
       var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; 

       var o = obj[$this.attr("EmployeeId")]; //<<<<undefined 
// rest of code... 

..

또한 .. 당신이 통과 된 데이터에 액세스하려고하는 경우, JSON으로 파싱 할 수있다, 또는 전달하지 않습니다 .attr은 $(this)에서 작동하지 않지만 this은 함수를 참조하고 있습니다.

$(this)[0].data은 함수의 데이터입니다. 어떤 속성을 가지고 있지 않습니다, 그것은 DOM 요소가 아닙니다.

일부 불일치 기능을 사용하고 있는데 의도가 무엇인지 정확하게 파악하기가 어렵습니다 .. DOM에서 가져 오려고하지만 기능의 데이터를 보여주고 있다고하면 두 가지입니다 완전히 다른 것들.

+1

또한 관련없는 메모에서 평가 사용이 좋지 않습니다. –

+1

이고 == –

+1

대신 ===를 사용하고 "EmployeeId"를 속성으로 저장하는 대신 데이터 속성으로 사용하십시오. 예 : ''그리고 .data ("employeeid")를 사용하여 액세스하십시오. –

0

먼저 $(this)[0].data의 내용을 json에게 구문 분석해야한다고 생각합니다.

이와 비슷한 Maby가 작동 할 수 있습니다.

var jsonData = jQuery.parseJson($(this)[0].data); 
var o = jsonData.EmployeeId;