Javascript不能与php一起使用
我使用的PHP脚本根据用户输入的数据返回“y”或“n”,这些数据通过变量Javascript不能与php一起使用,javascript,php,ajax,Javascript,Php,Ajax,我使用的PHP脚本根据用户输入的数据返回“y”或“n”,这些数据通过变量uname和pass传递。 我正在使用ajax$.get()方法调用php脚本 如果我尝试在$.get()方法中输出数据,它工作得很好,但在使用If语句将值与“y”或“n”进行比较时会出现问题 我的代码是这样的- var status; $('#login').click(function(){ $.get("login.php", { uname: document.getElementById('
uname
和pass
传递。
我正在使用ajax$.get()
方法调用php脚本
如果我尝试在$.get()
方法中输出数据,它工作得很好,但在使用If语句将值与“y”或“n”进行比较时会出现问题
我的代码是这样的-
var status;
$('#login').click(function(){
$.get("login.php", { uname: document.getElementById('uname').value, pass: document.getElementById('pass').value } )
.done(function( data ) {
status=data;
alert(status); //This works
});
if(status=='y')
{
alert('yes!'); //This is not working
// window.location.replace("welcome.html");
}
else if(status=='n')
{
alert('no!'); //This is not working
}
});
任何帮助都将不胜感激。如果由于ajax的异步特性,在ajax内部移动您的
:
var status;
$('#login').click(function(){
$.get("login.php", { uname: document.getElementById('uname').value, pass: document.getElementById('pass').value } )
.done(function( data ) {
status=data;
if(status=='y')
{
alert('yes!');
}
else if(status=='n')
{
alert('no!');
}
});
});
这是一个典型的异步问题。你提出了一个请求,将尚未返回的结果与一些字符串进行比较,然后对你的请求做出响应——太晚了,根本不重要。你的支票开得太快了。将状态比较放在done
回调中。由于ajax是异步的,当代码到达条件状态时,请求的代码可能还没有返回,因此var状态可能还没有初始化。
尝试将conditional stations放在done函数中,如下所示:
$('#login').click(function(){
$.get("login.php", { uname: document.getElementById('uname').value, pass: document.getElementById('pass').value } )
.done(function( data ) {
if(data =='y')
{
alert('yes!');
// window.location.replace("welcome.html");
}
else if(data =='n')
{
alert('no!');
}
});
我认为这应该能奏效;)。。。有关进一步的说明,您可以访问jQuery ajax api文档:不建议混合使用传统JS和jQuery;您可以用$('#uname')替换document.getElementById('uname').value
。val()
尝试将警报放入done()
回调?@Raptor确定。改变了这一点!:)您应该将这不起作用
替换为这正在起作用
。说谎的评论错误,最坏的错误!:谢谢!我没想过!是否有任何方法可以防止在此之后刷新页面?而且,它似乎每隔一段时间都能工作。(我想这是因为刷新?@Pranav:我看到你有页面刷新代码,你需要删除像window.location.replace
或window.location.reload
,等等导致页面刷新的代码。不是在另一种情况下,我想放一些代码来更改当前页面的css。现在发生的情况是,它会更改并立即将页面刷新到其原始状态。@Pranav~替换$('#login')。单击(function(){
和$('#login')。单击(function(e){e.preventDefault();
这将阻止我假设的表单在发出AJAX请求的同时发布。这将解决页面重新加载问题。