【发布时间】:2013-07-03 03:55:45
【问题描述】:
我对 PHP 还很陌生,而且我以前从未做过 AJAX - 我决定使用 Jquery .ajax 函数,因为它比 .post 具有更多的自定义功能,而且我喜欢它的简洁性而不是常规的 javascript。
这里是ajax代码
$("#upvotearrow").click(function() {
var dataString="vote=upvote";
$.ajax({
type: "POST",
url: "../secure/process_upvotedownvote.php",
data: dataString
})
.done(function() {
alert("Upvote registered!");
});
});
到目前为止,外部 PHP 文件是这样的:
include "db_connect.php";
include "functions.php";
if(isset($_POST['vote']) && !empty($_POST['vote'])) {
$poemid=7;
$typeofvote = $_POST['vote'];
if ($typeofvote=="upvote") {
if ($insert_stmt = $mysqli->prepare("UPDATE poems SET poem_upvotes=poem_upvotes+1 WHERE poem_id=?")) { //Prepare SQL statement
$insert_stmt->bind_param('i',$poemid); //Bind parameters
$insert_stmt->execute();// Execute the prepared query.
}
}
}
$mysqli 变量很好,当我在数据库中键入它时查询就可以工作,所以我的问题本质上是我是否正确地将数据从 AJAX 传输到 PHP。
还有一个附带问题——我调用的 PHP 文件是否可以从进行 AJAX 调用的页面的 URL 访问变量? (即 url 是 http://website.com/poem_id=7 并且我想访问 poem_id 值?
【问题讨论】:
-
例如,您可以使用
$_GET['poem_id']访问poem_id。$poem_id = $_GET['poem_id']; -
PHP 中的部分也是 ` if(isset($_POST['vote']) && !empty($_POST['vote'])) {` 很好,或者应该只是 $_GET['vote'] 而不是 $_POST?
-
URL 中
?之后的参数将在$_GET中,$.ajax的data:选项中的参数将在$_POST中。您也可以使用$_REQUEST,它将两者结合起来。 -
你有没有调试检查哪些值被传递到你的 php 页面?即使你的 if 条件有效?
-
我只是将 .ajax 函数中的 URL 参数更改为“secure/process_upvotedownvote.php”,Firebug 没有报告任何错误,该函数仍然无法正常工作——.即使 URL 错误,也会启动 done。我不太确定该怎么做——任何方向都会非常有帮助。
标签: php jquery mysql ajax post