2010-09-04 36 views
5

Im sử dụng Ajax để gửi giá trị cho một kịch bản PHP mà viết một số giá trị cho một cơ sở dữ liệu:Ajax giá trị sau trở lại

$.ajax({ 
    type: "POST", 
    data: "action=vote_down&id="+$(this).attr("id"), 
    url: "vote.php", 
    success: function(msg) { 
     $("span#votes_count"+the_id).fadeOut(); 
     $("span#votes_count"+the_id).html(msg); 
     $("span#votes_count"+the_id).fadeIn();      
    } 
}); 

Như bạn có thể có thể nói từ action=vote_down kịch bản là cho một kịch bản bầu cử.

Im đã ngăn người dùng bỏ phiếu nhiều lần bằng cách đăng nhập phiếu bầu với tên người dùng và ID trong số vote.php và nếu tên người dùng và ID đã có trong DB so với cùng bài đăng thì tôi không thêm phiếu bầu cho DB.

Cá nhân tôi nghĩ rằng truy vấn cơ sở dữ liệu trên mỗi lần tải trang để kiểm tra xem người dùng đã bỏ phiếu có thể khá chuyên sâu hay không, có nhiều nơi để bỏ phiếu trên một trang.

Vì vậy, thay vào đó tôi sẽ hiển thị cho người dùng tùy chọn bỏ phiếu, nhưng khi họ bỏ phiếu, tôi muốn một số cách trả lại giá trị từ vote.php để nói rằng họ đã bỏ phiếu.

Bất kỳ ý tưởng nào về cách tiếp cận tốt nhất cho điều này?

Trả lời

2

Sử dụng JSON

Nếu đây là tập tin của bạn để hiển thị các hình thức bỏ phiếu:

<div id='voteform-div'> 
<form id='voteform'> 
    Your form elements and a submit button here. 
</form> 
</div> 

JS của bạn đang nhìn như thế này:

jQuery('#voteform').live('submit',function(event) { 
    $.ajax({ 
     url: 'vote.php', 
     type: 'POST', 
     data: "action=vote_down&id="+$(this).attr("id"), 
     dataType: 'json', 
     success: function(messages) { 
      for(var id in messages) { 
       jQuery('#' + id).html(messages[id]); 
      } 
     } 
    }); 
    return false; 
}); 

vote.php bạn nên một cái gì đó như thế này:

// Get data from $_POST array. 

if(Already voted) { 

    // It will replace the id='voteform-div' DIV with error message 
    $arr = array ("voteform-div" => "you have already voted."); 

} else { 

// Store vote in database 

    // It will replace the id='voteform-div' DIV with confirmation message 
    $arr = array ("voteform-div" => "Yor vote is submitted. Thanks"); 

} 

echo json_encode($arr); // encode array to json format 



Để biết thêm chi tiết về giao diện này tại this question.

Các vấn đề liên quan