【发布时间】:2015-02-13 19:18:00
【问题描述】:
在数据库中插入一些数据并返回 json 对象无济于事后,我试图即时更新网页。
假设我有
<div id="try1"> try(<span id="votes1">0</span>)</div>
加载时页面显示当前的投票数,目前为 (0)。
然后我有一个按钮
<button onclick="vote(1);">+</button>
调用这个函数:
function vote(votes_id)
{
var div = 'try' +votes_id;
var url = 'vote.php?id=' +votes_id;
var destination = '#votes' +votes_id;
$.getJSON( url, function(data) {
$(destination).html (data.votes);
});
}
我的 vote.php 返回这个 json 或者在正确更新数据库之后,或者,至少我是这么认为的
{"votes":"1"}
但是我的网页没有从 0 更新到 1,
我用$data = json_encode($data);
var_dump 的结果是:
string '{"votes":"1"}'
和
{"votes":"1"}
作为回显 $data。
我可能错过了什么?
【问题讨论】:
-
在 firefox 上,如果您还没有安装 Firebug,请检查 Net 选项卡。你能看到ajax请求吗?答案是什么?是正确的数据吗?此外,在您的 javascript 中添加一些 alert(),在发送请求之前(以确认您到达该点)和在回调函数内部(以确认回调被调用)。
-
你能把
console.log(data);返回的内容粘贴到你的ajax回调中吗? -
当您说“至少我是这么认为的”时,您的数据库肯定会更新吗?而不是
$(destination).html (data.votes);发出警报,看看会发生什么以确保一切都很好,然后再继续alert(data.votes);以及为什么 divs var ?你应该在 url var 中使用它吗? -
我在该脚本的末尾添加了 console.log(data)。我得到: Uncaught ReferenceError: data is not defined vote_designer.js:15 vote vote.js:15 onclick
-
@billy 因为我在同一个页面中有许多由循环创建的 div,我需要在点击时更新,所以我需要不同的 id 标识符。是的,数据库正在更新。