【问题标题】:webpage content not updated through json function(data)网页内容未通过 json 函数更新(数据)
【发布时间】: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 标识符。是的,数据库正在更新。

标签: php html json


【解决方案1】:

那是因为你把他的成功回调放错了地方。

用途:

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);

  }); 

}

【讨论】:

  • PS:javascript 认为您正在尝试在名为 data 的变量中发送数据...但是由于您尚未定义“数据”变量,因此错误是未定义数据变量。通过将 "function(data)" 成功回调移动到正确的位置,js 将知道您在名为 'data' 的变量中的 RECEIVING 数据,并且不会抛出错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多