Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.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 AJAX表单未提交导致错误_Javascript_Php_Jquery_Mysql_Ajax - Fatal编程技术网

Javascript AJAX表单未提交导致错误

Javascript AJAX表单未提交导致错误,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我这里有我的AJAX代码 $("#add-student").click(function(e) { e.preventDefault(); formData = $("#student-form").serialize(); if (cleanFormInput()) { sendTheInfo(formData); } else { shakeForm(); } }); function sendTheInfo

我这里有我的AJAX代码

$("#add-student").click(function(e) { 
    e.preventDefault(); 
    formData = $("#student-form").serialize(); 
    if (cleanFormInput()) {
        sendTheInfo(formData);
    } else { 
        shakeForm();
    }
});

function sendTheInfo(formData) { 
    $.ajax({ 
        type: "POST", 
        url: "../classes/ajax/postNewStudent.php",
        data: formData, 
        statusCode: {
            404: function() {
                alert( "page not found" );
            }
        },
        success: function(formData) { 
            console.log("New student submitted:\n" + formData);
        //clearForms();
        },
        error: function(result, sts, err) { 
            console.warn("Connection error:\n" + err + " : " + sts);
            console.log(result);
            shakeForm();
        },
        complete: function() { 
            console.log("Everything complete");
        }
    });
}
始终无故障输出此错误: 连接错误: 语法错误:输入意外结束:parsererror

    require '../../core/init.php';
    require '../../classes/Config.php';

    header('Content-Type: application/json');

    if (!empty($_POST)) {

        $id = $_POST["sid"]; 
        $first = $_POST["first"];
        $last = $_POST["last"]; 
        $fav = "0";

        $sql = "INSERT INTO `students` (`id`, `first`, `last`, `active`) VALUES ('{$id}', '{$first}', '{$last}', '{$fav}')";

        $link = mysql_connect(Config::get('mysql/host'),Config::get('mysql/username'),Config::get('mysql/password')) or die("could not connect");;
        mysql_select_db(Config::get('mysql/db'), $link);

        $result = mysql_query($sql, $link);

        if ($result) {
            header('Content-Type: application/json');
            $student_data = $id . $first . $last . $fav;
            echo json_encode($student_data);
        }
    }
但仍然给出了完整的信息:一切都已完成

    require '../../core/init.php';
    require '../../classes/Config.php';

    header('Content-Type: application/json');

    if (!empty($_POST)) {

        $id = $_POST["sid"]; 
        $first = $_POST["first"];
        $last = $_POST["last"]; 
        $fav = "0";

        $sql = "INSERT INTO `students` (`id`, `first`, `last`, `active`) VALUES ('{$id}', '{$first}', '{$last}', '{$fav}')";

        $link = mysql_connect(Config::get('mysql/host'),Config::get('mysql/username'),Config::get('mysql/password')) or die("could not connect");;
        mysql_select_db(Config::get('mysql/db'), $link);

        $result = mysql_query($sql, $link);

        if ($result) {
            header('Content-Type: application/json');
            $student_data = $id . $first . $last . $fav;
            echo json_encode($student_data);
        }
    }
更新,PHP代码在这里:
    require '../../core/init.php';
    require '../../classes/Config.php';

    header('Content-Type: application/json');

    if (!empty($_POST)) {

        $id = $_POST["sid"]; 
        $first = $_POST["first"];
        $last = $_POST["last"]; 
        $fav = "0";

        $sql = "INSERT INTO `students` (`id`, `first`, `last`, `active`) VALUES ('{$id}', '{$first}', '{$last}', '{$fav}')";

        $link = mysql_connect(Config::get('mysql/host'),Config::get('mysql/username'),Config::get('mysql/password')) or die("could not connect");;
        mysql_select_db(Config::get('mysql/db'), $link);

        $result = mysql_query($sql, $link);

        if ($result) {
            header('Content-Type: application/json');
            $student_data = $id . $first . $last . $fav;
            echo json_encode($student_data);
        }
    }
我有点困惑,我的ajax设置有错吗?还是后端代码中的其他错误?我正在使用MySQL和jQuery2.0.3


此处更新代码:

删除了我的旧答案。我不认为这是一个ajax/javascript错误。这肯定是一个PHP错误。是这样的:

$student_data = $id . $first . $last . $fav;
echo json_encode($student_data);

你知道$student_数据不是数组,它只是一个字符串。您需要将一个数组传递到
json_encode
函数中

我已经看过您的代码了。我从PHP端看到您正在发送一个JSON对象。但是您没有为响应指定返回数据类型。尝试在ajax调用中添加数据类型。也许这会解决问题

    require '../../core/init.php';
    require '../../classes/Config.php';

    header('Content-Type: application/json');

    if (!empty($_POST)) {

        $id = $_POST["sid"]; 
        $first = $_POST["first"];
        $last = $_POST["last"]; 
        $fav = "0";

        $sql = "INSERT INTO `students` (`id`, `first`, `last`, `active`) VALUES ('{$id}', '{$first}', '{$last}', '{$fav}')";

        $link = mysql_connect(Config::get('mysql/host'),Config::get('mysql/username'),Config::get('mysql/password')) or die("could not connect");;
        mysql_select_db(Config::get('mysql/db'), $link);

        $result = mysql_query($sql, $link);

        if ($result) {
            header('Content-Type: application/json');
            $student_data = $id . $first . $last . $fav;
            echo json_encode($student_data);
        }
    }
function sendTheInfo(formData) { 
$.ajax({ 
    type: "POST", 
    url: "../classes/ajax/postNewStudent.php",
    data: formData, 
    dataType : 'json',
    statusCode: {
        404: function() {
            alert( "page not found" );
        }
    },
    success: function(formData) { 
        console.log("New student submitted:\n" + formData);
    //clearForms();
    },
    error: function(result, sts, err) { 
        console.warn("Connection error:\n" + err + " : " + sts);
        console.log(result);
        shakeForm();
    },
    complete: function() { 
        console.log("Everything complete");
    }
});
}

应该注意的是,即使后端没有返回结果,Ajax COMPLETE方法也会触发

complete: function() { 
        console.log("Everything complete");
    } 
因此,每次ajax调用“完成执行”时,即使提交失败,也会显示日志条目

我还建议不要有两个标题或相同的声明(一个在顶部,一个在if(result)调用中)

在评论线程中,您指出您正在服务器上工作,但不是在本地工作,因此这意味着您有一些路径问题。请检查您的

  ../ 

相对路径样式URL,并确保您具有相同的基点。

服务器脚本返回的是什么样的响应?JSON?请尝试检查您的服务器端。您似乎在
$link=mysql\u connect…
行的末尾有两个分号。尝试删除重复的?@Serlite PHP忽略类似的空语句。错误为表示来自服务器的响应为空。这意味着
INSERT
失败,因此
if($result)
失败,并且您没有回显JSON。如果您没有
数据类型:
选项,jQuery会从
内容类型
头自动计算出来。因为他正在发送
应用程序/JSON
,这与
数据类型:“JSON”
相同。发送头与指定
数据类型具有相同的效果e> option.oh抱歉,是的,你是对的。如果没有明确指定,它只检查标题的内容类型。另外,应该注意,现代jQuery已经弃用complete。“弃用通知:jqXHR.success()、jqXHR.error()和jqXHR.complete()从jQuery 1.8开始,回调已被弃用。要准备代码以便最终删除回调,请改用jqXHR.done()、jqXHR.fail()和jqXHR.always()