在cordova的Ajax请求不起作用

时间:2017-05-20 08:38:04

标签: php ajax cordova

我正在使用ajax请求到php脚本以注册新用户,它可以工作并将其保存在数据库中,但是返回错误而不是成功。

这是我的ajax请求:

$.ajax({
                    type: "POST",
                    url: "http://localhost/webAPI/register.php",
                    data: dataString,
                    crossDomain: true,
                    cache: false,                        
                    success: function (data) {
                        if (data == 1)
                            alert("success");

                        else(data == 0 ) 
                            alert("error");

                    },
                    error: function (){
                           alert("An Error Ocurred");
                     }


                });

这是我的php脚本:

if($_POST)
{
    $user_name      = $_POST['username'];
    $user_password  = $_POST['password'];
    $joining_date   = date('Y-m-d H:i:s');

    //password_hash see : http://www.php.net/manual/en/function.password-hash.php
    $password   = password_hash( $user_password, PASSWORD_BCRYPT, array('cost' => 11));


        //if($count==0){
            $stmt = $db_con->prepare("INSERT INTO users(username,password,joiningdate) VALUES(:uname,:pass,:jdate)");
            $stmt->bindParam(":uname",$user_name);
            $stmt->bindParam(":pass",$user_password);
            $stmt->bindParam(":jdate",$joining_date);

            if($stmt->execute())
            {
                echo 1;

            }
            else
            {
                echo 0;

            }

}

3 个答案:

答案 0 :(得分:0)

用else替换else(data == 0)

 $.ajax({
                        type: "POST",
                        url: "http://localhost/webAPI/register.php",
                        data: dataString,
                        crossDomain: true,
                        cache: false,                        
                        success: function (data) {
                            if (data == 1)
                                alert("success");

                            else
                                alert("error");

                        },
                        error: function (){
                               alert("An Error Ocurred");
                         }




  });

和PHP代码

if($stmt->execute())
            {
                exit(1);

            }
            else
            {
                exit(0);

            }

答案 1 :(得分:0)

您可以在JSON中解析PHP响应,以便从JS检查结果。

PHP响应:

if ($stmt->execute()) {
    die(json_encode(['return' => true]));
} else {
    die(json_encode(['return' => false]));
}

从JS中,只需检查return标志:

$.ajax({
    type: "POST",
    url: "http://localhost/webAPI/register.php",
    data: dataString,
    dataType: 'JSON', // tell JS that the PHP response is json formated
    crossDomain: true,
    cache: false,                        
    success: function (data) {
        if (data.return) { // check if return is true
            alert("success");
        } else { // if return is false
            alert("error");
        }
    },
    error: function (jqXHR, textStatus, errorThrown){
        console.log(textStatus, errorThrown); // this will tell you more in case of unsuccessful request
    }
});

希望它有所帮助。

编辑:

查看Ajax error属性函数。它必须告诉你更多关于错误的信息。

重新编辑:

您发送给PHP的dataString必须是JSON对象。所以从你的评论来看,它必须如下:

var dataString = {
    username: $("#username").val(),
    password: $("#password").val()
};

答案 2 :(得分:0)

关于我几天前提到的关于ajax的问题​​,我发现如果我从html文件中删除了form标签,它就可以完美地运行,并返回回调函数。谢谢大家努力帮助