尝试使用jQuery向PHP提交表单
Attempting to submit a form to PHP using jQuery
我创建了一个非常基本的HTML表单,它使用PHP将值传递给SQL数据库。我试图通过jquery ajax方法做到这一点,因为我不希望页面重新加载(这似乎也是最简单的方法之一)。
但是它似乎不工作,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>
Javascript: $(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();
});
});
PHP: <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变量:
$test = isset($_POST[Test]) ? $_POST[Test] : "";
现在$test
总是包含一个值。如果$_POST[Test]
是undefined
,将引发错误。
您的页面当前返回500 internal server error
。当出现错误并且错误报告关闭时,PHP会这样做。
请在php.ini中打开错误报告。它回显在服务器端脚本中引发的错误,您可以在ajax请求的网络选项卡中捕获该错误。
小费作为奖励:
您正在加载一个完整的页面(HTML主体内的PHP代码)。当使用像这样的ajax调用而不是完整的HTML页面时,您只想返回成功或失败。目前常用的方法是使用JSON。
基于你的代码的例子,使用PHP的json_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));
}
现在data-type
将是JSON
。jQuery可能会猜到,但是您可以在ajax()
选项中设置data-type : JSON
。jQuery使用JSON.parse
将data
自动解析为有效的Javascript。
现在可以在success子句中进行测试:
success: function(data) {
if (data.error)
{
alert(data.error);
}
else
{
alert(data.message + " " + data.sql);
}
}
安全建议:
$sql = "INSERT INTO test (Test, TestNumber, sex, date)
VALUES ('$test', '$testNumber', '$sex', now())";
这一行容易受到sql注入的影响。在mysqli
中使用prepared statements
$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提交表单时不断刷新
- 阻止使用 JavaScript 和 PHP 提交表单
- 获取所有输入字段并保留文本字段中的值,即使在使用 javascript 和 php 提交按钮后也是如此
- 当表单目标被遮挡时,如何使用 PHP 提交表单
- 使用php提交表单,并使用ajax向用户提供响应
- 使用 Java 脚本或 PHP 提交后保留输入框的最后一个值
- 使用 jQuery 或 Javascript 或 PHP 提交表单
- AJAX 以 JSON 格式向 PHP 提交数据
- Ajax向php提交按钮点击,然后提交到串行设备
- 通过curl和PHP提交JavaScript点击
- 仅使用PHP提交表单?没有JavaScript
- 使用正则表达式和javascript验证美国电话号码,并使用php提交
- 我如何使用javascript进行验证,然后使用php提交数据
- 动态php提交
- 仅当Javascript为true时执行PHP提交按钮
- 使用PHP提交表单
- php提交javascript表单
- 使用jquery和php提交按钮问题
- 使用php提交表单