Javascript 尝试使用jQuery向PHP提交表单
我创建了一个非常基本的HTML表单,它使用PHP将值传递给SQL数据库。我正试图通过jqueryajax方法来实现这一点,因为我不希望重新加载页面(这似乎也是最简单的方法之一) 但是它似乎不起作用,PHP页面返回500个错误代码 马上需要提醒你这是我第一次尝试这个,所以很可能这只是我语法上的一个愚蠢错误 HTML: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>
<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错误。