当我发出.post()请求时,例如
var data = $(this).serialize();
$('form').on('submit', function(event) {
event.preventDefault();
$.post('server.php', data, function(data) {
$('#data').append('<p>' + data + '</p>');
});
});
一切正常 - 数据库中的名称附加到带有p标签的#data元素。但是,当我尝试将数据作为像这样的对象传递时
var data = $(this).serialize();
$.post('server.php', {id: data}, function(data) {
$('#data').append('<p>' + data + '</p>');
});
比它不起作用。我尝试将.post()中的函数的参数更改为id,并且可能是PHP文件中.post()的参数和变量的每个名称组合都没有成功。这是在这个问题中与我的.post()请求的第一个版本兼容的完整的PHP文件:
<?php
$id = $_POST['id'];
$connection = new mysqli('localhost', 'root', '', 'dummy_db');
$query = 'SELECT name FROM dummy_db_table WHERE id = "' . $id . '"';
$result = $connection->query($query);
$row = $result->fetch_assoc();
echo $row["name"];
$connection->close();
?>
请注意,HTML文件中ID的输入字段名称为“id”。我确实理解HTML中的这个名称属性有助于PHP确定它的价值,但是如果没有我通过表单的action属性指定与PHP的连接,它是如何做到的呢?我只是通过AJAX(.post())来做这件事,而AJAX并没有告诉PHP任何关于那个id字段的具体信息。我在这里错过了什么?另外,我如何通过.post()的数据属性发送值对象而不是单个对象?谢谢。
答案 0 :(得分:0)
您尚未在此处添加表单代码,因此我们假设您的表单有两个字段名称和地址。 实际上你需要在事件下放置serialize()函数。像
$('form').on('submit', function(event) {
event.preventDefault();
var data = $(this).serialize();
$.post('server.php', {id: data}, function(data) {
$('#data').append('<p>' + data + '</p>');
});
});
如果您打印以下行,请在您的server.php文件中:
$id = $_POST['id'];
echo $id;
这会显示如下结果: name = iffi&amp; address = UK
我希望这会对你有所帮助。