最简单的jQuery,PHP,AJAX和sqlite示例?
我很难理解这一切是如何协同工作的。 我已经摆弄了几天,并且无法得出任何结果。 我正在尝试填写表单中的文本字段,并且在提交表单时,我想使用ajax将文本添加到我的sqlite数据库。
我知道你需要在jquery中调用$ .get,这是在表单提交时触发的。 这似乎工作正常,因为我可以从那里触发js警报框。 但是,当我传递php脚本的地址,该脚本有使用PDO添加到sqlite数据库的行时,没有任何内容添加到数据库中。 但是,当我使用php cli运行这个php脚本时,会有一些东西被添加到db中。
我似乎错过了这里必不可少的一步。 如果有人能为我弥合这个差距,我真的很感激!
编辑:按照Martin的要求,这里有一些代码:
我的php生成一些像这样的列表,中间有一个表单:
- hello
-
- world
然后我的jquery代码看起来添加在列表上方的文本框中的任何内容进行ajax调用。 这是在$(document).ready(function(){中。
$("form").submit(function() { var inputText = $("input").val(); $.ajax({ type: "POST", url: "add.php", data: inputText, success: function() { $('#formItem').prev().after( "" + inputText + " " )} }); });
我的add.php文件看起来像这样,如果我在cli上执行php脚本,它会在我的数据库中插入一些内容:
prepare("INSERT INTO ThisTable (content, priority) VALUES ('lolololol', 1);"); $sql->execute(); $base = null; ?>
不要忘记HTTP是无状态协议。 您对Web服务器发出的每个HTTP请求都被视为相同。 这表示HTTP请求是否是使用AJAX进行的。
我想说的是AJAX是一个客户端实现。 所有AJAX意味着您可以与网络服务器进行交互,而无需重新加载页面。 在JavaScript中第一次实现AJAX请求通常是一个大脑弯曲,因为回调的要求和交互的一般异步性使得难以掌握。
然而,在服务器上,应该没有什么可担心的。 AJAX请求仍然是HTTP请求,因此无论您是在浏览器中导航到http://www.yourwebsite.com/ajax/interact.php?a=1&b=2 ,还是使用AJAX发出HTTP GET请求,您的PHP脚本仍然会表现完全相同。 如果你var_dump($_GET);
在任何一种情况下,你都会得到一个数组,其a
和b
成员分别等于1
和2
。
如果您可以通过手动导航到URL成功地在浏览器中模拟AJAX请求,那就是服务器完成的工作。
建立之后,您的JavaScript应该是这样的:
$('#yourForm').bind('submit', function (event) { jQuery.get('/ajax/interact.php', 'a=1&b=2', function (response) { alert("AJAX request succeeded, response from the server was: " + response); }); event.preventDefault(); });
一旦你对使用jQuery的AJAX方法充满信心,你可能希望查看诸如serialize()
来帮助你,你可以将jQuery代码开发成如下代码:
$('form.ajax').live('submit', function (event) { var self = $(this); jQuery[(self.attr('method') || 'get').toLowerCase()](self.attr('action'), self.serialize(), function (response) { alert("AJAX request succeeded, response from the server was: " + response); }); event.preventDefault(); });
希望这可以帮助 :)
你的submit
函数应该return false;