这是Ajax代码。我使用这个ajax代码将细节传递给php页面,php文件应该返回一个数组值为true或false,具体取决于条件。我使用过json_encode但它似乎无法正常工作
$.ajax({
url: "join_form.php",
type: "POST",
dataType: 'json',
data: {
name: name,
email: email,
contact: contact,
role: role,
dialcode: dialcode,
countrycode: countrycode
},
cache: false,
// var data = JSON.parse(data);
success: function(data) {
data = $.parseJSON(data);
console.log(data);
if(data.status == 'false')
{
alert("Something went wrong");
}
else
{
alert("Message submitted successfully");
$("#joinForm").trigger("reset");
}
// alert(dialcode+countrycode);
}
});
$("#joinForm").trigger("reset");
});
这是Php文件(join_form.php)。 此php文件检查字段的有效性并存储错误值 在里面 我使用json_encode函数的数组,以便它可以 被送回ajax。但返回时没有任何反应。 它显示空白功能。 if else函数未执行。请帮忙
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "kites";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
alert("Connection failed");
}
else
{
$response = array();
// Check for empty fields
if(
empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['contact']) ||
empty($_POST['role']) ||
empty($_POST['dialcode']) ||
empty($_POST['countrycode'])
)
{
echo "No arguments Provided!";
$response['status']='false';
}
else{
$name = $_POST['name'];
$email = $_POST['email'];
$contact = $_POST['contact'];
$role = $_POST['role'];
$dialcode = $_POST['dialcode'];
$countrycode = $_POST['countrycode'];
$stmt = $this->conn->prepare("SELECT email from join_form WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 0) {
// user existed
// $stmt->close();
$response['status'] = 'false';
} else {
// user not existed
// $stmt->close();
$response['status'] = 'true';
}
header("Content-Type: application/json; charset=utf-8", true);
echo json_encode($response);
$sql = "INSERT INTO join_form (name,email,contact,role,dialcode,countrycode)
VALUES ('$name','$email','$contact','$role','$dialcode','$countrycode')";
if (mysqli_query($conn, $sql)) {
$response['status'] = 'true';
}
else {
echo "Please do it again";
$response['status'] = 'false';
// echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
header("Content-Type: application/json; charset=utf-8", true);
echo json_encode($response);
}
}
?>
答案 0 :(得分:-1)
从你的php中删除所有不需要的回声,并且只保留最后一个&#39; echo json_encode($ response);&#39;。
您不需要在ajax调用中解析返回的响应。所以你将获得你的状态,你可以用它做点什么。
或者,如果您还要回复正在回复的消息,则可以执行以下操作:
$response['status'] = 'false';
$response['message'] = 'No arguments Provided!';
echo json_encode(response).
而不是你的ajax电话回复:
if(data.status == 'false')
{
alert(data.message);
}
}
注意:从您的php中删除“HEADER”,您也不需要这样做。在ajax调用中,您已设置&#39; data-type = json&#39;这就足够了。数据将自动与适当的标题一起发回!
您正在将变量传递给您的数据:
data: {
name: name,
email: email,
contact: contact,
role: role,
dialcode: dialcode,
countrycode: countrycode
},
从哪里获得这些价值观? 如果他们来自表格,您需要参考他们:
var name = $('#name').val()
... and so on.
也许你已经这样做但是你没有发布完整的代码,以便让我发现你的问题。顺便说一下,在你将完整的代码发布到这里之前,先将答案投下来,但这并不是真的有帮助。
如果你也没有发布你的HTML,我就看不到了。
注意:您的答案是“没有任何效果&#39;没有真正帮助,你没有提到你最终收到的错误,所以我仍然需要猜测。