Ajax 在 windows 的 Visual Studio 中不起作用(Blend)

Posted

技术标签:

【中文标题】Ajax 在 windows 的 Visual Studio 中不起作用(Blend)【英文标题】:Ajax not working in visual studio for windows(Blend) 【发布时间】:2014-04-28 08:37:15 【问题描述】:

我正在使用 ajax 登录用户,但此脚本无法正常工作。当我调用登录函数执行任何事情..

function login() 
            var login = new XMLHttpRequest;
            var e = document.getElementById("email").value;
            var p = document.getElementById("password").value;                  
            var vars = "email=" + e + "&password=" + p;
            login.open("POST", "http://example.com/app/login.php", true);
            login.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            login.onreadystatechange = function()
                if (login.readyState == 4 && login.status == "200") 
                    var response = login.responseText;
                    //document.getElementById("status").innerhtml = response;
                
                document.getElementById("status").innerHTML = "Loggin in....";
                login.send(vars);
                if (response == "Sucess") 
                    window.location.replace("/logged.html");
                
                else 
                    document.getElementById("status").innerHTML == "Login Failed";                    
                
            
        

login.php 包含以下代码

require_once('../db_/connection.php');//Holds connection to database
$email = mysqli_real_escape_string($con, $_POST['email']);//Sanitizing email
$pass = md5($_POST['password']);//Hashing password

$sql = "SELECT id FROM users WHERE email='$email' AND password='$pass' LIMIT 1";
$query = mysqli_query($con, $sql);
$check = mysqli_num_rows($query);

if($check < 1)
    echo "fail";
    //mysqli_close($con);
    exit();

else
    echo "Sucess";
    //mysqli_close($con);
    exit();

调用登录函数不执行代码。

【问题讨论】:

你试过调试它吗?结果在哪里? 我使用 get 方法而不是 post 方法调试 php,并且脚本工作正常。问题出在 ajax 上。我无法找到。 我发现我写了 login.status = "200" 而不是 login.status = 200 我修复了这个问题,但仍然无法正常工作 我用firebug调试过..但是控制台是空的。 【参考方案1】: 第 2 行:new XMLHttpRequest 后缺少括号 第 15 行:您的 if (response == "Sucess") ... 拼写错误,它在 ajax 请求返回之前执行,因为它是异步

我在 JSFiddle 为您制作了一个工作版本:http://jsfiddle.net/eRv83/

您可能会发现 MDN 参考资料很有帮助:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

【讨论】:

我所做的是在发送 vars login.send(vars);我执行了一个名为 execute() 的函数,并将条件像这样放在该函数中。 login.send(vars);execute() function execute() if (response == "Sucess") window.location.replace("about.php"); else document.getElementById("status").innerHTML = "登录失败"; 但它仍然无法正常工作。 添加execute 函数是个好主意。通过检查login.status,您现在可以省略对login.responseText 的检查。顺便说一句,if (response == "Sucess") *拼写错误 我为你添加了完整的解决方案 我用firebug调试过..但是控制台是空的。 感谢您的脚本正在运行.. 但不知道为什么我的即使控制台为空也无法运行..

以上是关于Ajax 在 windows 的 Visual Studio 中不起作用(Blend)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 10 中从命令行构建 Visual Studio 2015 vb 解决方案

AJAX 光标 - Sharepoint Visual Webpart

Visual Studio 2015 安装失败

卡巴斯基防病毒软件阻止 Windows 的 Visual Studio 稳定版本下载

如何在 Windows 7 上使用 Vim 的“make”命令和 Visual Studio 的编译器编译 C 程序?

求Visual Studio 2015 的ISO镜像下载地址