2010-04-15 46 views
1

为什么我会得到答案“不”?jquery ajax表单函数(数据)

jQuery的将数据发送到PHP查询

$j.post("logincheck.php",{ 
username:$j('#username').attr('value'), 
password:$j('#password').attr('value'), 
rand:Math.random() } , 
function(data) { 
    if(data=='yes') {alert('yes');} 
    else {alert('no');} 
    } 
); 

这里是PHP查询

if(isset($_POST['username'])): 
$username = $_POST['username']; 
$password = $_POST['password']; 
$posts = mysql_query("SELECT * FROM users WHERE username='$username'"); 
$no_rows = mysql_num_rows($posts); 
while($row = mysql_fetch_array($posts)): 
print 'yes'; 
endwhile; 
else: 
print 'no'; 
//header('location: index.php'); 
endif; 
endif; 
+0

php代码是否完整或是否存在? 您是否试图查看数据对象以查看它返回的信息类型? PS 为什么dont'you使用.VAL()方法,而不是.attr( '值')? – mamoo 2010-04-15 12:30:07

+0

就像旁注一样,我不会通过GET请求发送密码值,除非它是完全不可避免的。 – 2010-04-15 12:31:02

+0

您是否尝试提醒数据?您是否从服务器端回应yes? – ant 2010-04-15 12:32:18

回答

0

尽量直接回覆此:

{ 
"valid" : "yes" // or "no" 
} 

,并在你的信息:

$j.post(url,{your stuff}, function(data){ 
    if(data.valid==="yes"){...} 
},"json"); 

并使用.VAL()来替代

0

获取输入有关使用.val()代替.attr('value')什么。

我的意思是,它是在黑暗中拍摄的,但属性值在您输入任何内容时不会更新,它用于设置表单的默认值,而不是.val()方法应获取输入的值。

PS:您是否确实测试过您的PHP脚本正确接收数据?

编辑jsFiddle检查它后,它原来都应该正常工作:-)

http://jsfiddle.net/cwPPp/

1

这似乎从你的PHP代码,如果用户有多个帖子,然后“是”将打印多次。这意味着,如果用户有且只有一个职位这一说法只会是真实的:

if(data == 'yes') 

在JavaScript更改else子句下面,看看是越来越由AJAX调用返回,留给我们知道你的得到。

alert(data);