私はこのサイトや他のサイトを数時間探しているので、私はかなり切望しています。 同じトピックの多くの質問からのコードはありません。。PHPスクリプトからのAJAXの応答が機能しない
データをデータベースに挿入し、完了後にメッセージを表示する必要があります。また、jQueryでAJAXを使用しているため、非同期になります。正常に動作し、データは挿入されますが、応答メッセージは表示されません。
私はPHPの初心者です。なぜこれがうまくいかないのか分からないことがあります。以下の関連コード。
PHP関数呼び出し:Brokerから
if(isset($_POST["function"]) && !empty($_POST["function"]) && $_POST["function"] == "cl-add") {
$dbb->addMember("MyUsername", $_POST["name"]);
//$dbb is a DataBaseBroker instance
}
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);
});
問題は、 'データ型を使用してしなければならないということはおそらくです。 PHPコードで文字列をエコーするだけであれば、ajaxデータ型でそれを扱うべきです。 'echo json_encode($ my_variable_or_array);'としてそれをエコーすると、それをjsonオブジェクトとして使うことができます。 – bucketman
成功コールバックの代わりに完了を聞いてみましたか? –
'dataType: 'text'、'成功:function(data){ アラート(データ); } '一度チェック –