开发者

function calling error in ajax

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开发者_StackOverflow社区.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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜