我现在正在搜索这个和其他网站好几个小时,所以我非常绝望。 此处使用相同主题的许多问题的代码无效。
我需要将数据插入数据库并在完成后显示消息。此外,我正在使用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);
});
答案 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警告一个对象,实际上你并没有试图提醒一个对象,但我只是想提一下它。