Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript不能与php一起使用_Javascript_Php_Ajax - Fatal编程技术网

Javascript不能与php一起使用

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('

我使用的PHP脚本根据用户输入的数据返回“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的异步特性,在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请求的同时发布。这将解决页面重新加载问题。