2012-01-02 31 views
1

我只希望注册用户进行投票。我不想改变我的所有代码。现在最简单的方法就是将用户登录并将其传递给隐藏域。如何通过AJAX后发送隐藏值

我怎样才能在这里传递一个隐藏的值?

这是我迄今为止

$(function() { 

$(".vote").click(function() 
{ 

var name = $(this).attr("name"); 
var id = $(this).attr("id"); 

var dataString = 'id='+ id ; 
var parent = $(this); 


if(name=='up') 
{ 

$(this).fadeIn(200).html('<img src="dot.gif" align="absmiddle">'); 
$.ajax({ 
    type: "POST", 
    url: "up_vote.php", 
    data: dataString, 
    cache: false, 

    success: function(html) 
    { 
    parent.html(html); 

    } }); 

} 

return false; 
    }); 

}); 

<div class="box1"> 
    <div class="up"><a href="" class="vote" name="up" id="'.$row['id'].'">'.$row['plus'].'</a></div> 
    </div> 

up_vote.php

if($_POST['id']) 
{ 

$id=$_POST['id']; 
. 
. 
. 
} 
+1

为什么没有PHP中检查和如果用户没有登录不呼应投票禁用投票? – stedotmartin 2012-01-02 00:49:20

+0

我必须更改太多的代码。我不能只是停止投票。 – emre 2012-01-02 00:54:08

+0

哦,意大利面条代码[PHP]的乐趣:-) – 2012-01-02 01:49:09

回答

2

添加您的隐藏输入:

<input type="hidden" id="loggedIn" value="whatever" /> 

设置可变

var id = $(this).attr("id"); 
var loggedIn = $("#loggedIn").val(); //will be the value of loggedIn 

改变这一行的$。阿贾克斯()

data: {loggedIn: loggedIn, id: id} 
+1

我同意bdares这是错误的方法,但它会起作用。 – Paul 2012-01-02 00:50:35

8

错误的做法了。 Javascript在客户端执行。你永远不会相信客户,因为客户是由用户控制的。使用存储在服务器端的会话。

(什么会让用户从复制+粘贴网页代码,修改它,执行它?)

+0

或使用萤火虫或其他JavaScript调试器并在提交之前更改隐藏字段的值。 – 2012-01-02 00:52:54

0

简单地通过附加的隐藏字段的dataString

dataString += 'foo=bar'