Ajax Post请求不起作用
Ajax Post request not working
你好,我已经使用ajax方法创建了一个登录脚本,我尝试过,但这对我不起作用。如果不成功,你能告诉我为什么我不能使用这个吗
function login() {
var username = document.getElementById('username').value;
var pass = document.getElementById('pass').value;
if(username == '' && pass == '') {
alert('Fields could not be left empty');
} else {
$.ajax({
type : "POST",
url : "includes/register.php",
data : "command=login&username="+username+"&password="+pass,
datatype : "json",
success : function(data) {
if (data.status == 200) {
alert('Successfull');
var return_data = data.responseText;
document.getElementById('messagearea').innerHTML = return_data;
} else {
alert('Unsuccessful');
}
}
});
}
}
它应该运行警报成功,但我收到警报("未成功"),这意味着状态不等于200,有人能帮我处理吗
这是我的php代码
if(isset($_POST['command']) && $_POST['command'] == 'login') {
$username = $_POST['username'];
$pass = $_POST['pass'];
$password = md5($pass);
$check = mysqli_query($connection, "SELECT * FROM users WHERE username = '$username'");
$result = mysqli_num_rows($check);
if($result != 1) {
echo "<div class='message'>Response Successful</div>";
} else {
echo "<div class='message'>Username/Password did not matched</div>";
}
}
datatype
中的T
应为大写,
$.ajax({
type: "POST",
url: "includes/register.php",
data: "command=login&username=" + username + "&password=" + pass,
dataType: "json",
根据服务器代码,你的数据应该像这个
data: "command=login&username=" + username + "&pass=" + pass,
像这样更改成功处理程序中的代码,
document.getElementById('messagearea').innerHTML = data;
如果您想检查xhr请求状态,您应该在success function
中使用3参数。
success : function(data,text,xhr) {
if (xhr.status == 200) {
alert('Successfull');
var return_data = data;
document.getElementById('messagearea').innerHTML = return_data;
} else {
alert('Unsuccessful');
}
}
对于dataType:"json"
if(isset($_POST['command']) && $_POST['command'] == 'login') {
$username = $_POST['username'];
$pass = $_POST['pass'];
$password = md5($pass);
$check = mysqli_query($connection, "SELECT * FROM users WHERE username = '$username'");
$result = mysqli_num_rows($check);
if($result != 1) {
echo json_encode("<div class='message'>Response Successful</div>");
} else {
echo json_encode("<div class='message'>Username/Password did not matched</div>");
}
}
您可以尝试此解决方案:
$.ajax({
type: "POST",
url: "includes/register.php",
data: {command: "login", username: username, password: pwd},
dataType: "json",
不要在jQuery脚本中使用"pass",因为有时它不能正常工作。
再见!:D
您需要在ajax成功函数中再添加两个对象,这将帮助您获得请求的更多信息。
$.ajax({
type : "POST",
url : "register.php",
data : "command=login&username="+username+"&password="+pass,
datatype : "json",
success : function(data,xhr,req) {
if (req.status == 200) {
alert('Successfull');
var return_data = data.responseText;
document.getElementById('messagearea').innerHTML = return_data;
} else {
alert('Unsuccessful');
}
}
});
此外,您还需要将返回数据编码为JSON,以便您的请求返回类型与JSON匹配。如果您通过Developer工具baar仔细查看您的ajax请求,您会发现还有两个对象返回,其中包含不同的内容。
- 包含数据
- Contains Request成功或失败
- 包含阵列中的不同对象
相关文章:
- 为什么 AJAX POST 请求不起作用
- AJAX请求不起作用,除非使用alert()
- Ajax Post请求不起作用
- IE8 jquery ajax头请求不起作用
- jQuery点击功能在获取请求后不起作用
- 使用Javascript的Ajax请求在iPhone浏览器中不起作用
- JQuery AJAX请求不起作用
- Node.js cors请求-异步示例不起作用
- Ajax 对 JSON 的请求不起作用
- React JS js 中的 AJAX 请求不起作用
- 对 URL 的 JSON-P 请求不起作用
- Jquery ajax请求不起作用
- 带有ajax xml请求的Node js脚本不起作用
- Ajax请求三次都不起作用,然后就起作用了
- AngularJS http.jsonp请求.then和.success函数不起作用
- Jquery ajax发布请求不起作用
- 外部AJAX请求不起作用
- 对SOAP服务的Preflight OPTIONS请求不起作用
- 使用AJAX发出POST请求;不起作用
- 第二个ajax请求在移动浏览器上不起作用