2011-03-10 4 views
0

Salut ci-dessous est le code, j'appelle la fonction GetAjaxComments qui envoie une requête ajax et réussie terminée mais je ne reçois aucune valeur en réponse (par exemple: fonction côté serveur retourné DbComment = "commentaire existe déjà"). S'il vous plaît aider.Jquery 1.3.2 Ajax comment obtenir la réponse

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; 
     } 
    } 


} 

Répondre

2

Votre code fait aucun sens ce que-si-jamais.

Votre code n'initie pas une requête AJAX. Vous devez appeler l'un des jQuery's AJAX functions pour lancer une requête AJAX à l'aide de jQuery. Contenant $(document).ready() comme cela fait pas sens et ne fera pas ce que vous attendez de faire.

$(document).ready() attache un gestionnaire qui est exécuté au chargement de la page. Comme le chargement de la page sera presque certainement arrivé lorsque cette fonction est exécutée, la fonction fournie sera exécutée immédiatement et allouera quelques variables locales (qui seront toutes indisponibles en dehors de la portée de la fonction)

très probablement voulez est:

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; 
      } 
     } 
    } 
} 

Vous devriez lire sur ajax function de jQuery

utilisant des requêtes AJAX synchrone est une pratique extrêmement mauvaise, le navigateur sera verrouillé et inutilisable pendant toute la durée de la demande Vous devriez sérieusement considérer. gérer la réponse en utilisant une callba ck. Je l'ai expliqué comment cela fonctionne dans another StackOverflow question, mais dans votre exemple, vous pouvez changer votre code:

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

ne fonctionne toujours pas, je ne reçois pas de réponse (returnText) – vmisra

+0

@vmisra: Essayez 'alert()' ing la réponse que vous obtenez (avant de le 'eval()' it) pour vous assurer que c'est la réponse que vous attendez. Parcourez votre code en voyant où il atteint et n'atteint pas. Postez un lien vers la version en direct afin que quelqu'un puisse vous aider, si possible. – Matt

4

Il semble que jQuery ne définit pas le type de contenu dans le HttpRequestheader correctement.

Ajouter les éléments suivants:

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

à l'appel Ajax.