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
卡巴斯基防病毒软件阻止 Windows 的 Visual Studio 稳定版本下载