2010-10-08 5 views
1
function manageVoting() { 
    $("div.votemaincontainer").each(function() { 
     // variable Declaration and intialization. 
     var myRating = parseInt($(this).find('#[id$=hfMyVote]').val()); 
     var currentVote = parseInt($(this).find('#[id$=hfCurrentVote]').val()); 
     $('.VoteDownImage').live(click, function() { 
      ajaxcall(0); 
     }); 
     $('.voteupImage').live(click, function() { 
      ajaxcall(1); 
     }); 
    } 

    function ajaxcall(a){ // here it's giving error. 
     var questionID = parseInt($(this).find('#[id$=currentquestionId]').val()); 
     var objectType = 100; 
     var previousvote = 2; 
     $.ajax({ 
      url: 'UserControls/Vote/VoteAction.aspx/Voting', 
      cache: false, 
      type: 'POST', 
      data: '{ObjectType: "' + objectType + '", guid: "' + currentGuid + '",previousVote: "' + previousvote + '",vote:"' + a + '"}', 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: function (data) { 
       var result = eval(data.d); 
      } 
     }); 
    } 
    $(function() { 
     // manageVoting(); 
    }); 
+0

Quelle est votre question? –

+0

Nishant - J'ai amélioré l'indentation de code dans votre question en utilisant [jsbeautifier.org] (http://jsbeautifier.org). Une indentation correcte du code peut résoudre les problèmes rapidement. : o) Voir ma réponse mise à jour. – user113716

Répondre

4

EDIT: Après avoir amélioré l'indentation du code dans votre question, il semble que vous avez oublié de fermer la boucle .each() avec }); avant le support de fermeture pour la fonction manageVoting().

Une indentation de code appropriée est extrêmement utile.

De même, il n'est pas très logique d'appliquer .live() dans une boucle. Vous avez seulement besoin de le faire une fois.

Voici votre code avec les améliorations:

// Call these once on page load. 
    // Note the difference in capitalization in your selectors. Make sure it is 
    // the same in your HTML classes 
$('.VoteDownImage').live(click, function() { 
    ajaxcall(0); 
}); 
$('.voteupImage').live(click, function() { 
    ajaxcall(1); 
}); 

function manageVoting() { 
    $("div.votemaincontainer").each(function() { 
     // variable Declaration and intialization. 
     var myRating = parseInt($(this).find('#[id$=hfMyVote]').val()); 
     var currentVote = parseInt($(this).find('#[id$=hfCurrentVote]').val()); 
    }); // closed the .each() loop 
} 

function ajaxcall(a){ // here it's giving error. 
    var questionID = parseInt($(this).find('#[id$=currentquestionId]').val()); 
    var objectType = 100; 
    var previousvote = 2; 
    $.ajax({ 
     url: 'UserControls/Vote/VoteAction.aspx/Voting', 
     cache: false, 
     type: 'POST', 
     data: '{ObjectType: "' + objectType + '", guid: "' + currentGuid + '",previousVote: "' + previousvote + '",vote:"' + a + '"}', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function (data) { 
      var result = eval(data.d); 
     } 
    }); 
} 
$(function() { 
    // manageVoting(); 
}); 

réponse originale:

Vous ne spécifiez pas de type pour les paramètres de fonction (ou toute autre variable) en javascript. C'est à cause de la faute de frappe, où n'importe quelle variable peut être utilisée pour stocker n'importe quel type.

Cette ligne:

function ajaxcall(int a) 

devrait être:

function ajaxcall(a) 
+0

monsieur pouvez-vous vérifier ceux mon code .. –

+0

@Nishant - Pouvez-vous fournir plus d'informations? Quelle est l'erreur? – user113716

1

@Nishant - quand vous obtenez fait déroulage votre code, il y a beaucoup de problèmes. En regardant votre code, vous essayez d'avoir un vote haut/bas sur les images.

Eh bien, j'ai quelques questions et déclarations:

  1. Qu'est-ce que la variable locale manageVoting utilisé?
  2. Pourquoi avez-vous des variables commençant par des majuscules et d'autres avec des minuscules? La référence this en parseInt($(this).find('#[id$=currentquestionId]').val()) n'est pas ce que vous cherchez pour obtenir l'ID. Essayez de renommer votre fonction pour autre chose que ajaxCall.
  3. Ne créez pas votre propre chaîne de requête, laissez JavaScritp et jQuery gérer cela.

est ici un début avec votre code:

function updateVote(elementClicking, vote){ // here it's giving error. 
    var imagVote = { 
     ObjectType: 100, 
     guid: parseInt($(elementClicking).find('#[id$=currentquestionId]').val()), 
     previousVote: 2, 
     vote: vote 
    } ; 

    $.ajax({ 
     url: 'UserControls/Vote/VoteAction.aspx/Voting', 
     cache: false, 
     type: 'POST', 
     data: imagVote, 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function (data) { 
      var result = eval(data.d); 
     } 
    }); 
} 

$('.VoteDownImage').live(click, function() { 
    updateVote(this, 0); 
}); 

$('.voteupImage').live(click, function() { 
    updateVote(this, 1); 
}); 

function manageVoting() { 
    $("div.votemaincontainer").each(function() { 
     // variable Declaration and intialization. 
     var myRating = parseInt($(this).find('#[id$=hfMyVote]').val()); 
     var currentVote = parseInt($(this).find('#[id$=hfCurrentVote]').val()); 
    }); 

} 

$(function() { 
    manageVoting(); 
}); 

Un dernier conseil indésirable. Ne compliquez pas votre code comme il se doit ## Titre ##

Questions connexes