Javascript 无法使用 php

Javascript not working with php

我正在使用 PHP 脚本 returns 'y' 或 'n' 取决于用户输入的数据,这些数据通过变量 unamepass。 我正在使用 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/