0
function manageVoting() {
    var parameter;
    var myVoting;
    var divVoting;
    var divVotes;
    var value = -1;
    var parameterData;
    $('div.votemaincontainer').each(function() {
        parameter = $(this).find('#[id$= hfUrl]').val();
        myVoting = parseInt($(this).find('#[id$=hfMyVote]').val());
        divVoting = $(this).find('[id$=divVoting]');
        divVotes = $(this).find('[id$=divVotes]');


        $('img.voteupImage').live('click', function() {
            if (myVoting == 1) {
                alert(" you have already voted");
            }
            else {
                value = 1;
            }
        });
        $('img.votedownImage').live('click', function() {
            if (myVoting == 0) {
                alert(" you have already voted");
            }
            else {
                value = 0;
            }
        });


        if (value == 0 || value == 1) 
        {
            parameterData = parameter + value + "'}";

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

                    if (result) {
                        if (result.length > 1) {
                            alert("i am inside result here result length >1");
                            if (result[1] == 1 && result[2] == 1) 
                            {
                                $('img.voteupImage').attr('src', 'UserControls/Vote/Images/aftervote_arrow_up.png');
                                $('img.votedownImage').attr('src', 'UserControls/Vote/Images/arrow_down.png');
                                $('div.divVotes').html(result[0]);
                            }
                            else 
                            {
                                alert('U can not vote more than 1');
                            }
                            $('#[id$=hfMyVote]').html(result[1]);
                            if (result[1] == 0 && result[2] == 1) 
                            {
                                $('img.voteupImage').attr('src', 'UserControls/Vote/Images/Arrow_Up.png');
                                $('img.votedownImage').attr('src', 'UserControls/Vote/Images/aftervote_down.png');
                                $('div.divVotes').html(result[0]);  
                            }
                            else 
                            {
                                alert('U can not vote down more than 1');
                            }
                        }
                        else {
                            $('div.divVotes').html(result[0] - 1);
                            alertDialog("Rating any knowledge item is only available for Registered User.<br>Do you want to <a class='signUpPopUp' href='signup.aspx'> signup</a> Now?");
                        }

                    }
                },
                error: function() {
                    alert("i am inside error");

                }
            });
        }
    });
}



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

i have written above code but when i clicl on image then $.ajax does not executr what's problem in code.

1 Answer 1

1

In the click live handlers, you're only setting the value of the value parameter. You're not executing the rest of the code after that. Try something like this (untested):

function manageVoting() {
    var parameter;
    var myVoting;
    var divVoting;
    var divVotes;
    var value = -1;
    var parameterData;
    $('div.votemaincontainer').each(function() {
        parameter = $(this).find('#[id$= hfUrl]').val();
        myVoting = parseInt($(this).find('#[id$=hfMyVote]').val());
        divVoting = $(this).find('[id$=divVoting]');
        divVotes = $(this).find('[id$=divVotes]');

        function processVote(value) {
            if (value == 0 || value == 1) {
                parameterData = parameter + value + "'}";

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

                        if (result) {
                            if (result.length > 1) {
                                alert("i am inside result here result length >1");
                                if (result[1] == 1 && result[2] == 1) 
                                {
                                    $('img.voteupImage').attr('src', 'UserControls/Vote/Images/aftervote_arrow_up.png');
                                    $('img.votedownImage').attr('src', 'UserControls/Vote/Images/arrow_down.png');
                                    $('div.divVotes').html(result[0]);
                                }
                                else 
                                {
                                    alert('U can not vote more than 1');
                                }
                                $('#[id$=hfMyVote]').html(result[1]);
                                if (result[1] == 0 && result[2] == 1) 
                                {
                                    $('img.voteupImage').attr('src', 'UserControls/Vote/Images/Arrow_Up.png');
                                    $('img.votedownImage').attr('src', 'UserControls/Vote/Images/aftervote_down.png');
                                    $('div.divVotes').html(result[0]);  
                                }
                                else 
                                {
                                    alert('U can not vote down more than 1');
                                }
                            }
                            else {
                                $('div.divVotes').html(result[0] - 1);
                                alertDialog("Rating any knowledge item is only available for Registered User.<br>Do you want to <a class='signUpPopUp' href='signup.aspx'> signup</a> Now?");
                            }

                        }
                    },
                    error: function() {
                        alert("i am inside error");

                    }
                });
            }
        }

        $('img.voteupImage').live('click', function() {
            if (myVoting == 1) {
                alert(" you have already voted");
            }
            else {
                value = 1;
                processVote(value);
            }
        });
        $('img.votedownImage').live('click', function() {
            if (myVoting == 0) {
                alert(" you have already voted");
            }
            else {
                value = 0;
                processVote(value);
            }
        });
    });
}

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

Also, when you're using the JSON data type with $.ajax, you shouldn't need to eval the data that comes back. jQuery already evaluates the JSON for you, and returns a native JavaScript object.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.