PHP脚本的AJAX响应不起作用

时间:2016-04-23 15:58:08

标签: javascript php jquery ajax

我现在正在搜索这个和其他网站好几个小时,所以我非常绝望。 此处使用相同主题的许多问题的代码无效

我需要将数据插入数据库并在完成后显示消息。此外,我正在使用AJAX与jQuery,所以它将是异步的。它工作正常,数据被插入,但没有响应消息显示。

我是PHP的初学者,不能忽视为什么这不起作用。相关代码如下。

PHP函数调用:

if(isset($_POST["function"]) && !empty($_POST["function"]) && $_POST["function"] == "cl-add") {
        $dbb->addMember("MyUsername", $_POST["name"]);
        //$dbb is a DataBaseBroker instance
}

来自Broker的PHP函数:

function addMember($username, $ime) {
    $query = "INSERT INTO clan";
    $query.=" (username, ime) ";
    $query.="VALUES ('".$username."','".$ime."');";

    $result = $this->mysqli->query($query);

    if ($result) {
        echo("You added a member: ".$ime);
    } else {
        $response = "An error occured. Please try again.";
        $response .= "<br>";
        $response .= "Error: ".mysqli_error($connection);
        echo $response;
    }
}

JQuery函数声明:

var addMember = function(name, responseFn) {
    if (name === "") {
        alert("Please enter a name");
        return;
    }
    $.ajax({
        type : 'POST',
        url: '../includes/layout/cl.php',
        dataType : 'json',
        data : {
            'name' : name,
            'function' : 'cl-add'
        },
        success : function(data) {
            responseFn(data); //not working, should alert
        }
    });
}

var responseCallback = function(data) {
    alert(data);
}

$(文件).ready()

里面
$(document).on('click', '#cl-add', function(evt) {
    var name = $("#cl_frm input").val();
    addMember(name, responseCallback);
});

2 个答案:

答案 0 :(得分:2)

在你的代码上:

dataType : 'json',

Ajax请求正在等待JSON响应,但您正在给出文本响应。

您应该根据需要将dataType:更改为text或html。

dataType : 'html',

dataType : 'text',

PHP更改:

<?php
function addMember($username, $ime)
{
    $query = "INSERT INTO clan";
    $query .= " (username, ime) ";
    $query .= "VALUES ('" . $username . "','" . $ime . "');";

    $result = $this->mysqli->query($query);

    $response = null;

    if ($result) {
        $response = "You added a member: " . $ime;
    } else {
        $response = "An error occured. Please try again.";
        $response .= "<br>";
        $response .= "Error: " . mysqli_error($connection);
    }

    echo $response;
    exit;
}

答案 1 :(得分:0)

将dataType参数更改为“text”。你也可以用JavaScript警告一个对象,实际上你并没有试图提醒一个对象,但我只是想提一下它。