Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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向PHP提交表单_Javascript_Php_Jquery_Ajax_Forms - Fatal编程技术网

Javascript 尝试使用jQuery向PHP提交表单

Javascript 尝试使用jQuery向PHP提交表单,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我创建了一个非常基本的HTML表单,它使用PHP将值传递给SQL数据库。我正试图通过jqueryajax方法来实现这一点,因为我不希望重新加载页面(这似乎也是最简单的方法之一) 但是它似乎不起作用,PHP页面返回500个错误代码 马上需要提醒你这是我第一次尝试这个,所以很可能这只是我语法上的一个愚蠢错误 HTML: <form id ="form1"> <input type="text" name="Test"> <br><br>

我创建了一个非常基本的HTML表单,它使用PHP将值传递给SQL数据库。我正试图通过jqueryajax方法来实现这一点,因为我不希望重新加载页面(这似乎也是最简单的方法之一)

但是它似乎不起作用,PHP页面返回500个错误代码

马上需要提醒你这是我第一次尝试这个,所以很可能这只是我语法上的一个愚蠢错误

HTML:

<form id ="form1">
    <input type="text" name="Test">
    <br><br>
    <input type="number" name="TestNumber">
    <br><br>
    <input type="radio" name="sex" value="male" checked>  Male
    <br>
    <input type="radio" name="sex" value="female"> Female
    <br><br>
    <input type="submit" value="Submit">
</form> 
$(document).ready(function() {
    console.log("jquery ready");
    var frm = $('#form1');

    frm.submit(function(ev) {
        $.ajax({
            type: "POST",
            url: "form_validation.php",
            data: frm.serialize(),
            success: function(data) {
                alert('ok');
            }
        });

        ev.preventDefault();
    });
});
<html>
    <head>
        <title>Untitled</title>
    </head>
    <body>
        <?php
        $servername = "server";
        $username = "user";
        $password = "pass";
        $dbname = "name";
        $test = $_POST[Test];
        $testNumber = $_POST[TestNumber];
        $sex = $_POST[sex];


        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

        $sql = "INSERT INTO test (Test, TestNumber, sex, date)
        VALUES ('$test', '$testNumber', '$sex', now())";

        $sqlback = "SELECT ID FROM `test` WHERE sex = \'Male\'";

        if ($conn->query($sql) === TRUE) {
            echo "New record created successfully" + . $sqlback;
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }

        $conn->close();
        ?> 

    </body>
</html>
PHP:

<form id ="form1">
    <input type="text" name="Test">
    <br><br>
    <input type="number" name="TestNumber">
    <br><br>
    <input type="radio" name="sex" value="male" checked>  Male
    <br>
    <input type="radio" name="sex" value="female"> Female
    <br><br>
    <input type="submit" value="Submit">
</form> 
$(document).ready(function() {
    console.log("jquery ready");
    var frm = $('#form1');

    frm.submit(function(ev) {
        $.ajax({
            type: "POST",
            url: "form_validation.php",
            data: frm.serialize(),
            success: function(data) {
                alert('ok');
            }
        });

        ev.preventDefault();
    });
});
<html>
    <head>
        <title>Untitled</title>
    </head>
    <body>
        <?php
        $servername = "server";
        $username = "user";
        $password = "pass";
        $dbname = "name";
        $test = $_POST[Test];
        $testNumber = $_POST[TestNumber];
        $sex = $_POST[sex];


        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

        $sql = "INSERT INTO test (Test, TestNumber, sex, date)
        VALUES ('$test', '$testNumber', '$sex', now())";

        $sqlback = "SELECT ID FROM `test` WHERE sex = \'Male\'";

        if ($conn->query($sql) === TRUE) {
            echo "New record created successfully" + . $sqlback;
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }

        $conn->close();
        ?> 

    </body>
</html>

无标题

此行导致错误。请删除
+

echo "New record created successfully" + . $sqlback;
还要测试您的post VAR:

$test = isset($_POST[Test]) ? $_POST[Test] : "";
现在,
$test
始终包含一个值。如果
$\u POST[Test]
未定义,则会引发错误

您的页面当前返回
500内部服务器错误
。当引发错误并且关闭错误报告时,PHP会执行此操作

请在php.ini中打开错误报告。它回显服务器端脚本中出现的错误,您可以在ajax请求的网络选项卡中捕获该错误


作为奖励的小费:

您正在加载一个完整的页面(HTML正文中的PHP代码)。当使用像这样的ajax调用而不是完整的HTML页面时,您只想返回成功或失败。现在常用的方法是使用JSON

基于代码的示例,使用PHP的
json\u encode
返回json:

if ($conn->query($sql) === TRUE) {
  echo json_encode(array("message" => "New record created successfully", "sql" => $sqlback));
} else {
   echo json_encode(array("error" => $sql . "<br>" . $conn->error));
}
安全建议

$sql = "INSERT INTO test (Test, TestNumber, sex, date)
VALUES ('$test', '$testNumber', '$sex', now())";
这一行易受SQL注入的影响。在
mysqli
中使用

$sql = $conn->prepare("INSERT INTO test(Test, TestNumber, sex, date) VALUES (?, ?, ?, ?)");
$sql->bind_param("siss", $test, $testnumber, $sex, now()); //s = string, i = number
$sql->execute(); //execute the query;
$sql->close(); //close the statement.

请描述关于“它似乎不起作用”的更多细节。请在此处发布您的PHP代码。打开浏览器的开发工具,并检查“网络”选项卡。PHP脚本返回的状态代码是什么?从PHP页面返回的500服务器错误submit按钮工作正常(),您可以在浏览器控制台的network选项卡中看到submit将字段值发送到您的PHP页面
form\u validation.PHP
。这似乎得到了它,非常感谢。我对PHP真的很陌生,我觉得语法真的很头疼!那么对于success子句,这是否也适用于PHP?或者我必须用jquery获取它吗?请尝试在浏览器的“网络”选项卡中查看(可通过
F12
访问)返回的页面告诉您什么。上面可能有一些php错误。