Javascript 未通过JQuery Ajax(JSON)将数据处理到php表单处理器
我正在为我的网站建立一个用户注册表单。我通过jqueryajax没有使用Json,所有php注册过程都是正确的。当我将其指定为数据类型时(这样我可以得到更“有教养”的响应),php文件甚至不会读取发送的数据,返回的是.error响应中的[object]。我在互联网上搜索,试图找到一个解决方案,但没有一个能帮上忙。我想这可能是我犯的错误,但我找不到。希望你能帮助我, 提前谢谢 (请不要介意英文错误——我必须写得快。也不要介意外国人的评论或标题。) 表格:(HTML) PHP脚本Javascript 未通过JQuery Ajax(JSON)将数据处理到php表单处理器,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我正在为我的网站建立一个用户注册表单。我通过jqueryajax没有使用Json,所有php注册过程都是正确的。当我将其指定为数据类型时(这样我可以得到更“有教养”的响应),php文件甚至不会读取发送的数据,返回的是.error响应中的[object]。我在互联网上搜索,试图找到一个解决方案,但没有一个能帮上忙。我想这可能是我犯的错误,但我找不到。希望你能帮助我, 提前谢谢 (请不要介意英文错误——我必须写得快。也不要介意外国人的评论或标题。) 表格:(HTML) PHP脚本 <!
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<title>Reghandler</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<?php
ob_start();
// Valor nulo para as variaveis antes de iniciar
$username = $password = $nome = $email = $codreg = "";
$host = "localhost"; // Nome do Host
$dbuser = "root"; // Mysql username
$dbpass = ""; // Mysql password
$db_name = "usuarios"; // Database name
$tbl_name = "usuarios"; // Table name
$code_tbl = 'codigos';
$returnData = array();
$errors = array();
$recieved = null;
mysql_connect("$host", "$dbuser", "$dbpass")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$recieved = json_decode($_POST, true);
}
if ($recieved != null) {
$username = test_input($recieved["username"]);
$password = test_input($recieved["password"]);
$nome = test_input($recieved["nome"]);
$email = test_input($recieved["email"]);
$codreg = test_input($recieved["codreg"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
$data = mysql_real_escape_string($data);
return $data;
}
$sql = "SELECT * FROM $tbl_name WHERE username='$username'";
$result = mysql_query($sql);
if (mysql_num_rows($result) != 0) {
$errors['username'] = 'Nome de usuário já existente.';
}
$sqlcode = "SELECT * FROM $code_tbl WHERE codigo='$codreg'";
$resultcode = mysql_query($sqlcode);
if (mysql_num_rows($resultcode) == 0) {
$errors['codigo'] = 'Código de registro não encontrado.';
}
if (!empty($errors)) {
$returnData['success'] = false;
$returnData['errors'] = $errors;
} else {
$returnData['success'] = true;
$insert = "INSERT INTO $tbl_name (username, senha, nome, email)
VALUES ('$username', '$password','$nome','$email')";
}
echo json_encode($returnData);
ob_end_clean();
?>
</body>
</html>
正则处理器
请尝试将数据类型从json更改为json。问题是,您正在返回大量内容,但json无效。您需要删除所有html,并确保只发送json而不发送其他内容。因此,没有html、警告、回音等,最后只有一个json\u encode()
由于jQuery遇到大量无法转换为对象的文本,并且您已指定数据为有效的json,因此它会自动转到错误处理程序。以下部分可以这样编辑:
var formData = {
'username': username,
'password': pass,
'nome': nome,
'email': email,
'codreg': codReg
};
$.ajax({
type: 'POST',
url: 'checkregistration.php?callback=',
dataType: 'json',
data: data:JSON.stringify([formData])},
encode: true
}).done....etc
在php页面中,您可以返回一些值,如
echo $_GET['callback'] . $jsonData
其中$jsonData是JSON类型的变量
试试看
以下博客将帮助您:
这个错误是一个简单而愚蠢的打字错误。
我忘了做真正的查询:
if (!empty($errors)) {
$returnData['success'] = false;
$returnData['errors'] = $errors;
} else {
$returnData['success'] = true;
$insert = "INSERT INTO $tbl_name (username, senha, nome, email)
VALUES ('$username', '$password','$nome','$email')";
当我在$insert之后插入mysql\u query($insert)时,它开始柔和地工作。我唯一的问题是如何处理从php返回的数据。问题是脚本甚至没有处理。我认为这与到达有关,否则即使我没有收到回复,我也可以注册一个用户。我尝试了你建议的更改,但没有一个真正起作用。。。我在接收php文件中的信息时遇到问题。如果我不使用JSON,它可以正常工作。你能尝试将数据类型JSON更改为jsonp吗?我认为这与数据类型无关,但与我处理php脚本的方式有关。。。我会看看我得到了什么,然后留下回执。谢谢你的帮助。
echo $_GET['callback'] . $jsonData
if (!empty($errors)) {
$returnData['success'] = false;
$returnData['errors'] = $errors;
} else {
$returnData['success'] = true;
$insert = "INSERT INTO $tbl_name (username, senha, nome, email)
VALUES ('$username', '$password','$nome','$email')";