2011-03-10 6 views
0

안녕하세요 아래 코드는 아약스 요청 및 성공한 완료 보내고 GetAjaxComments 함수를 호출하는 오전하지만 응답 (예 : 서버 쪽 함수가 반환 된 DbComment = "주석 이미 존재한다 "). 도와주세요.Jquery 1.3.2 Ajax 응답을 얻는 방법

function GetAjaxComments(sEmployeeCompensationID, iInfoType) { 

$(document).ready(function() { 
    var json = "{'EMPLOYEECOMPENSATION_ID':'" + sEmployeeCompensationID 
     + "','iInfoType':'" + iInfoType 
     + "'}"; 
     var ajaxPage = "AjaxGridRowSave.aspx?SaveRow=2"; //this page is where data is to be processed 
     var options = { 
     type: "POST", 
     url: ajaxPage, 
     data: json, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: false, 
     complete: function(data) { 
     }, 
     error: function(msg) { 
      if (msg.statusText != "OK") { 
       OpenInfoPopup("Alert", "Error occured while retriving data."); 
      } 
     } 
    }; 

}); 
var returnText = data; 

if (returnText != '') { 

    var dbValues = new Array(); 
    dbValues = eval('(' + returnText + ')'); 

    if ((dbValues1.DbComment) && (dbValues1.DbComment != null) && (dbValues1.DbComment != '')) { 
     switch (dbValues1.iInfoType) { 
      case 1: OpenInfoPopup('Eligibility Override Reason', dbValues1.DbComment); break; 
      case 2: OpenInfoPopup('Eligibility Override Rejection Reason', dbValues1.DbComment); break; 
      case 3: OpenInfoPopup('Rejection Reason', dbValues1.DbComment); break; 
      case 4: OpenInfoPopup('Guideline Override Reason', dbValues1.DbComment); break; 
      case 5: OpenInfoPopup('Guideline Override rejection Reason', dbValues1.DbComment); break; 
      case 6: OpenInfoPopup('Pay Range Override Reason', dbValues1.DbComment); break; 
      case 7: OpenInfoPopup('Pay Range Override Rejection Reason', dbValues1.DbComment); break; 
     } 
    } 


} 

답변

2

이 코드는 없는 감각 무엇을 그리 적 있습니다.

코드가 AJAX 요청을 초기화하지 않습니다. jQuery를 사용하여 AJAX 요청을 시작하려면 jQuery's AJAX functions 중 하나를 호출해야합니다. 이처럼 $(document).ready()을 포함하면 이되며, 사용자가 기대하는 바를하지 않습니다.

$(document).ready()은 페이지로드시 실행되는 핸들러를 부착합니다. 이 함수가 실행될 때 거의 확실하게 페이지로드가 발생하므로 제공된 함수가 즉시 실행되고 몇 가지 로컬 변수가 할당됩니다 (이 모두는 함수의 범위 밖에서는 사용할 수 없습니다).

대부분의 아마 원하는입니다

function GetAjaxComments(sEmployeeCompensationID, iInfoType) { 
    var json = "{'EMPLOYEECOMPENSATION_ID':'" + sEmployeeCompensationID + "','iInfoType':'" + iInfoType + "'}"; 
    var ajaxPage = "AjaxGridRowSave.aspx?SaveRow=2"; //this page is where data is to be processed; 
    var returnText = ''; 

    jQuery.ajax({ 
      type: "POST", 
      url: ajaxPage, 
      data: json, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      async: false, 
      success: function(response) { 
       returnText = response; 
      }, 
      error: function(msg) { 
       if (msg.statusText != "OK") { 
        OpenInfoPopup("Alert", "Error occured while retriving data."); 
       } 
      } 
     }; 

    }); 

    if (returnText != '') { 
     var dbValues = new Array(); 
     dbValues = eval('(' + returnText + ')'); 

     if ((dbValues1.DbComment) && (dbValues1.DbComment != null) && (dbValues1.DbComment != '')) { 
      switch (dbValues1.iInfoType) { 
      case 1: 
       OpenInfoPopup('Eligibility Override Reason', dbValues1.DbComment); 
       break; 
      case 2: 
       OpenInfoPopup('Eligibility Override Rejection Reason', dbValues1.DbComment); 
       break; 
      case 3: 
       OpenInfoPopup('Rejection Reason', dbValues1.DbComment); 
       break; 
      case 4: 
       OpenInfoPopup('Guideline Override Reason', dbValues1.DbComment); 
       break; 
      case 5: 
       OpenInfoPopup('Guideline Override rejection Reason', dbValues1.DbComment); 
       break; 
      case 6: 
       OpenInfoPopup('Pay Range Override Reason', dbValues1.DbComment); 
       break; 
      case 7: 
       OpenInfoPopup('Pay Range Override Rejection Reason', dbValues1.DbComment); 
       break; 
      } 
     } 
    } 
} 

당신은 매우 나쁜 관행은 동기 AJAX 요청을 사용하여 jQuery의 ajax function

에 읽어해야한다 브라우저가 요청의 기간 동안 잠겨 사용할 수 없게됩니다 당신은 심각하게 고려해야합니다. callba를 사용하여 응답 처리 ck. 이 another StackOverflow question에서 작동 어떻게 설명했지만, 귀하의 예제에서 당신은 당신의 코드를 변경할 수 있습니다 : jQuery를 제대로 HttpRequestheader의 내용 유형을 설정하지 않는 것 같다

function GetAjaxComments(sEmployeeCompensationID, iInfoType) { 
    var json = "{'EMPLOYEECOMPENSATION_ID':'" + sEmployeeCompensationID + "','iInfoType':'" + iInfoType + "'}"; 
    var ajaxPage = "AjaxGridRowSave.aspx?SaveRow=2"; //this page is where data is to be processed; 

    jQuery.ajax({ 
     type: "POST", 
     url: ajaxPage, 
     data: json, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     async: false, 
     success: function(returnText) { 

      if (returnText != '') { 
       var dbValues = new Array(); 
       dbValues = eval('(' + returnText + ')'); 

       if ((dbValues1.DbComment) && (dbValues1.DbComment != null) && (dbValues1.DbComment != '')) { 
        switch (dbValues1.iInfoType) { 
        case 1: 
         OpenInfoPopup('Eligibility Override Reason', dbValues1.DbComment); 
         break; 
        case 2: 
         OpenInfoPopup('Eligibility Override Rejection Reason', dbValues1.DbComment); 
         break; 
        case 3: 
         OpenInfoPopup('Rejection Reason', dbValues1.DbComment); 
         break; 
        case 4: 
         OpenInfoPopup('Guideline Override Reason', dbValues1.DbComment); 
         break; 
        case 5: 
         OpenInfoPopup('Guideline Override rejection Reason', dbValues1.DbComment); 
         break; 
        case 6: 
         OpenInfoPopup('Pay Range Override Reason', dbValues1.DbComment); 
         break; 
        case 7: 
         OpenInfoPopup('Pay Range Override Rejection Reason', dbValues1.DbComment); 
         break; 
        } 
       } 
      } 
     }, 
     error: function(msg) { 
      if (msg.statusText != "OK") { 
       OpenInfoPopup("Alert", "Error occured while retriving data."); 
      } 
     } 
    }); 
}; 
+0

아직 작동하지 않습니다. 응답이 없습니다. (returnText) – vmisra

+0

@vmisra : 기대 한 응답인지 확인하기 위해'alert()'응답을 시도하십시오 ('eval()'). 도달 범위와 도달 범위를 보면서 코드를 단계별로 실행하십시오. 가능한 경우 누군가가 당신을 도울 수 있도록 라이브 버전에 대한 링크를 게시하십시오. – Matt

4

.

는 다음을 추가 :

beforeSend: function(xhr){ 
    xhr.setRequestHeader('Content-Type', 'application/json'); 
}, 

를 Ajax 호출합니다.

관련 문제