Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未通过JQuery Ajax(JSON)将数据处理到php表单处理器_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript 未通过JQuery Ajax(JSON)将数据处理到php表单处理器

Javascript 未通过JQuery Ajax(JSON)将数据处理到php表单处理器,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我正在为我的网站建立一个用户注册表单。我通过jqueryajax没有使用Json,所有php注册过程都是正确的。当我将其指定为数据类型时(这样我可以得到更“有教养”的响应),php文件甚至不会读取发送的数据,返回的是.error响应中的[object]。我在互联网上搜索,试图找到一个解决方案,但没有一个能帮上忙。我想这可能是我犯的错误,但我找不到。希望你能帮助我, 提前谢谢 (请不要介意英文错误——我必须写得快。也不要介意外国人的评论或标题。) 表格:(HTML) PHP脚本 <!

我正在为我的网站建立一个用户注册表单。我通过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')";