AJAX调用PHP服务登录。科尔多瓦

AJAX调用PHP服务登录。科尔多瓦,php,jquery,ajax,login,Php,Jquery,Ajax,Login,我是新手,登录时遇到一些问题。 这是我的jQuery: jQuery(document).ready(function () { $.ajax({ type: 'POST', url: 'login.php', crossDomain: true, data: 'uname=TEST', dataType: 'json', async: false, success

我是新手,登录时遇到一些问题。 这是我的jQuery:

jQuery(document).ready(function () {

    $.ajax({ 
        type: 'POST', 
        url: 'login.php', 
        crossDomain: true,
        data: 'uname=TEST',
        dataType: 'json', 
        async: false,

        success: function (response){ 
            alert ("success"); 
            if (response.success) { 
                alert("you're logged in");
            }else {
                alert("Your login failed");
            }
        },
        error: function(error){
            alert('Could not connect to the database' + error);
       }
    }); 

});
问题是,它总是转到错误回调,我已经尝试自己运行PHP文件,它可以工作(如果我在那里硬编码用户名)

我不知道为什么总是出错,有什么帮助吗

这是PHP:

<?php
header("access-control-allow-origin: *");
header('Content-type: application/json');
include 'conection.php';

mysql_query('SET CHARACTER SET utf8');

$uname = $_POST['user'];

$sql = "SELECT IdUser FROM user WHERE IdUser = '$uname'";
$result = mysql_query($sql);

$num_row = mysql_num_rows($sql);

$row = mysql_fetch_array($result);

//echo $sql . " " . mysql_affected_rows();

if (mysql_affected_rows() == 1) {
    $response['success'] = true;
}else{
    $response['success'] = false;
}

echo json_encode($response);

?>

您传递给AJAX调用的参数是“uname”,但您在php中查找的参数是“user”-请更改其中一个参数以匹配另一个参数。

尝试如下更新:

$.ajax({ 
    type: 'POST', 
    url: 'login.php', 
    //crossDomain: true,
    data: {"user":"TEST"}, // updated the uname to user which is @ php side
    dataType: 'json', 
    //async: false,


我认为您可以从ajax中提取
crossDomain:true
async:false

您确定您的URL是正确的吗?网络监视器(在浏览器开发工具中)向您显示了此请求的哪些信息?为什么设置了
跨域
选项?这与Cordova有什么关系?…您不需要传递用户名以外的信息来实际登录(如密码)?因为您没有插入、更新,在查询中替换或删除任何内容,mysql\u受影响的\u行将始终返回零。但这并不是你的错误回调被触发的原因。事实上,这是我在这里编辑代码时采取的措施,所以,在真实版本中,这没关系