我正在制作一个用户点击按钮的网站,并提高他们的分数。
我不希望在单击按钮时刷新页面,所以我想使用AJAX将数据发送到服务器。这是我到目前为止所做的:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#update").click(function() {
$.ajax({
type: "POST",
url: "update.php",
data: "increase",
dataType: "Boolean",
success: function(update) {}
});
});
});
</script>
<button id="update" type="button">Button</button>
<div id="counter"></div>
我知道,它并不多,但我对这些东西很新。我遇到的主要问题是你应该使用的语法。我希望服务器在请求成功时返回一个布尔变量,那么我会在“数据类型”中使用布尔值,包括引号,撇号或什么?
另外,我正在努力抓住ajax脚本如何知道它是否成功。 “update.php”脚本中是否会出现返回“TRUE”或“FALSE”值的内容?
最后,将要发送到php文件的数据应该告诉php用新分数更新mysql表。如果它收到ajax发送的数据,我应该如何告诉php更新mysql?
非常感谢
答案 0 :(得分:1)
有些事情应该有效:
$.ajax({
type: "POST",
url: "update.php",
data: {"action":"increase"},
success: function(response) {
if(response.error) {
alert(response.error);
return;
}
if(response === 'true') {
//do something
} else {
//do something else
}
}
)};
在PHP端,您的代码可能如下所示:
<?php
if(!isset($_POST['action'])) {
echo '{"error": "You must provide a action"}';
exit;
}
$action = $_POST['action'];
if(!in_array($action, array('increase', 'decrease')) die('{"error":"invalid parameters"}');
$action = ($action == 'increase') ? ' + 1' : ' - 1';
//$db is assumed to be a live mysqli object from here on out...
$result = $db->query("UPDATE someTable SET fieldname = fieldname {$action} LIMIT 1;");
echo ($result->affected_rows > 0) ? 'true' : 'false';
?>
答案 1 :(得分:1)
dataType
属性是json,xml,html,jsonp,text或script之一。 Boolean不是预期类型之一。在这种情况下,您不希望注意那些预期的类型。如果根据服务器返回的MIME类型没有传递任何内容,jQuery会对类型进行智能猜测。
您要做的是创建一个将由成功回调调用的函数。
$.ajax({
type: "POST",
url: "http://www.server/path/to/update.php",
data: "increase",
success: function(data, status, xhr) {
functionToProcess(new Boolean(data));
}
)};
当Ajax调用以200值完成时,将调用作为成功参数(在本例中为匿名函数)的函数。因为Ajax是异步的(这就是A所代表的),所以返回的东西对你没有好处。你想要做的是调用另一个将处理你的布尔值的函数。我在示例代码中调用了functionToProcess
。有关更多信息,请查看.ajax()上的jQuery文档。
您可以了解Javascript中的String值与false布尔值here生成的真实值。
答案 2 :(得分:1)
此语法应该有效
$(document).ready(function(){
$("#update").click(function(){
$.ajax({type: "POST",
url: "update.php",
data: "increase",
success: function(update) {
if(update)
$("#anyelement").html("Thanks");
else
$("#anyelement").html("Try again !");
}
});
});
});
您可以忽略数据类型,因为您可以从任何方向解析
how the ajax script knows whether it's successful
如果我理解你的观点,只要返回ajax函数,进程就会成功,你需要解析返回并实现逻辑。
从你的php你喜欢这样:
if(you logic is correct){
//update you database and ... other login goes here
return true;
}else{
return false;
}