好。所以我现在正在写的是一个非常简单的论坛,在使用AJAX的Javascript中。我的部分任务是使用我的讲师用PHP为我们编写的API添加一篇新帖子。需要注意的是,API和SQL数据库完全是本地的。
我用来添加这篇文章的功能是:
function addPosts()
{
// Add the new thread to the SQLlite database.
var treq = new Request({
url:'guestbook/control.php?action=insertPost',
'method':'post',
onSuccess: function() {
alert('win');
},
onFailure: function() {
alert('fail');
}
}).send(Object.toQueryString({
// Had to convert it to a query string because it wouldn't work as a normal object.
// These are the required values to send, to store a "post" in the database.
'name':'This is a name',
'comment':'This is a comment!'
}));
}
我知道这会每次添加相同的数据。我只是想让该死的东西发挥作用!
发生的事情是,当调用此函数时,我收到SQL语法错误。我很困惑,因为这意味着我的讲师的代码是错误的。在与我的讲师交谈后,他解释说,当发布数据未正确发送到PHP代码时会发生这种情况。所以我开始使用Google Chrome的开发者工具来查看发生了什么,这就是我发现的:
现在对我而言,这意味着数据已成功加载到请求中,并且正在传递给PHP文件。显然我错了。我一直绞尽脑汁试图让这项工作成功。
我知道API工作正常,因为我班上的其他人都没有遇到任何问题,我使用的代码几乎是笔记中的代码,所以我大约90确定这是正确的。
需要注意的一点是onSuccess
键中的代码运行,所以我知道它在AJAX方面不是问题。
另一件事是这个代码在那些计算机上在大学工作,而且因为我已经把它带回家,所以决定不工作。
堆栈追踪
致命错误:带有消息的未捕获异常'PDOException' 'SQLSTATE [HY000]:一般错误:1接近“)”:G:\ Ajax中的语法错误 Coursework \ guestbook \ php \ database.php:134Stack trace:#0 G:\ Ajax Coursework \ guestbook \ php \ database.php(134):PDO-> prepare('INSERT INTO pos ...')#1 G:\ Ajax Coursework \ guestbook \ php \ class.GuestBook.php(44): DatabaseHandler-> insert(Array)#2 G:\ Ajax Coursework \ guestbook \ control.php(8):GuestBook-> insert(Array)#3 G:\ Ajax Coursework \ guestbook \ control.php(56):insertPost()#4 {main} 在第134行的G:\ Ajax Coursework \ guestbook \ php \ database.php中抛出
答案 0 :(得分:0)
Object.toQueryString用于将对象转换为查询字符串。因此,如果服务器要求设置$ _POST ['name']和$ _POST ['comment'],则不会。
坦率地说,因为你发布它,我不认为$ _GET ['name']或$ _GET ['comment']也会设置。
Request.send需要一个对象。你发送一个字符串。所以它应该是 Request.send({prop:'value'}),而不是Request.send(value)。
帮自己一个忙,并使用以下PHP代码制作PHP,并查看它返回的内容。它可能会马上清除它。我感觉除了$ _GET ['action']
之外什么都没发送<?php
echo '<pre>';
print_r($_GET);
print_r($_POST);
echo '</pre>';
?>
答案 1 :(得分:0)
以防万一有人偶然发现这个帖子正在寻找答案:
function addPosts()
{
// Add the new thread to the SQLlite database.
var treq = new Request({
url:'guestbook/control.php?action=insertPost',
onSuccess: function() {
alert('win');
},
onFailure: function() {
alert('fail');
}
}).post('name=This is a name&comment=This is a comment!');
}
这里我使用.post方法来发布数据。