【问题标题】:Ajax PhoneGap always errorAjax PhoneGap 总是出错
【发布时间】:2015-05-25 17:42:43
【问题描述】:

我必须做一个应用程序,我决定使用PhoneGap,但是我的Ajax总是说“错误”,我不知道为什么,因为插入效果很好......

$("#test").click(function() {
    var name = $("#name").val();
    var password = $("#password").val();
    alert(name+' '+password);
    $.ajax({
        type: "POST",
        url: "http://191.165.1.16/PULZ/ajax_action.php",
        // contentType: "application/json; charset=utf-8",
        dataType: "json",
        data : {
            actionname : 'insert',
            name:name,
            password:password
        },
        success: function(data) {
            alert("work");
        },
        error: function(data) {
            alert("There was an error loading the feed");
        }
    });
});

还有我的 PHP 代码

if (isset($_POST["actionname"]) && !empty($_POST['actionname'])){
    $actionname = $_POST['actionname'];

    if($actionname == 'insert'){
        $connect = new PDOsql();
        $name = $_POST['name'];
        $password = md5($_POST['password']);
        $sql="INSERT INTO user(name,password) VALUES(?,?)";
        $opt = array($name, $password);
        $connect->query($sql,$opt);

        $connect = null;

        die(
            json_encode(
                array(
                    'state'=>'success'
                )
            )
        );
    }
}

【问题讨论】:

  • 尝试删除“type:”、“url:”、“dataType:”等,保留值
  • 只需从您的 php 中返回一个 json 字符串,以检查是否有问题...如果它工作正常,您知道在哪里搜索...
  • 你真的有PDOsql的课程吗?该类的query() 方法是否准备和执行查询?并检查控制台给出的响应。
  • 直接在地址栏检查 php url 并给出硬编码的 post 值,看看输出是什么。如果您在响应时收到任何错误或警告,您的 ajax 将失败,因为它正在接受 json
  • 无论如何,老实说,这只是一个愉快的猜测。分别检查服务器/客户端。尝试从 curl 命令或 Postman 调用服务器脚本,看看它返回什么,它是什么格式等。然后当你确定它有效时,让客户端正确调用它

标签: php jquery ajax cordova


【解决方案1】:

试试这个

JAVASCRIPT

$("#test").click(function() {
    var name = $("#name").val();
    var password = $("#password").val();
    alert(name + ' ' + password);
    $.ajax({
        type: "POST",
        url: "http://191.165.1.16/PULZ/ajax_action.php",
        // contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: {
            actionname: 'insert',
            name: name,
            password: password
        },
        headers: {
            'Content-Type': 'application/json'
        }
        success: function(data) {
            alert("work");
        },
        error: function(data) {
            alert("There was an error loading the feed");
        }
    });
});

PHP

if (isset($_POST["actionname"]) && isset($_POST['name']) && isset($_POST['password'])){
    $actionname = $_POST['actionname'];
    $name = $_POST['name'];
    $password = $_POST['password'];

    if($actionname == 'insert'){
        $connect = new PDOsql();
        $name = $_POST['name'];
        $password = md5($_POST['password']);
        $sql="INSERT INTO user(name,password) VALUES($name,$password)";
        $opt = array($name, $password);
        $connect->query($sql,$opt);

        $connect = null;

        die(
            json_encode(
                array(
                    'state'=>'success'
                )
            )
        );
    }
}

【讨论】:

    【解决方案2】:

    您不能将“empty()”与非变量元素一起使用,您将始终收到内部服务器错误“500”。

    注意:在 PHP 5.5 之前,empty() 只支持变量;还要别的吗 将导致解析错误。换句话说,以下不会 工作:空(修剪($name))。相反,请使用 trim($name) == false。

    PHP Manual - empty

    【讨论】:

    • $_POST 是一个数组,所以在 OP 代码中它可以正确使用,无论 OP 运行的是哪个 PHP 版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多