Javascript 无法使用 php
Javascript not working with php
我正在使用 PHP 脚本 returns 'y' 或 'n' 取决于用户输入的数据,这些数据通过变量 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 的异步性质,将您的 if
条件移到 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 status 可能 尚未初始化 。
尝试将条件语句 放入 函数 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 文档:http://api.jquery.com/jquery.ajax/
我正在使用 PHP 脚本 returns 'y' 或 'n' 取决于用户输入的数据,这些数据通过变量 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 的异步性质,将您的 if
条件移到 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 status 可能 尚未初始化 。 尝试将条件语句 放入 函数 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 文档:http://api.jquery.com/jquery.ajax/