【问题标题】:json data not loaded using jquery in pythonjson数据未在python中使用jquery加载
【发布时间】:2013-03-30 17:41:25
【问题描述】:

jquery 正在完美加载,但未加载 json 数据。我也没有收到任何错误。

脚本是

$("#loadjson").click(function(){
$.getJSON('filename.json', function(data) {
  var items = [];

  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('body');
});
});

json 文件是

{
  "name": "samsung",
  "product": "led tv",
  "rate": "23,000"
}

模板是

<head>
<ul></ul>
<button>loadjson</button>
{% block js-custom %}
{% load static %}
<script src="{{ STATIC_URL }}scripts/jquery-1.9.1.min.js"></script>
<script src="{{ STATIC_URL }}scripts/modernizr-2.0.6.min.js"></script>
<script src="{{ STATIC_URL }}scripts/myscript.js"></script>
{% endblock %}
</head>

这是在屏幕上显示名称、产品和价格。

脚本加载正常,我也没有收到错误消息。Nut 我没有收到 o/p。我以为 jon 文件没有加载。请帮我这样做。

如果必须进行任何更改才能使用此代码,请指导我。

【问题讨论】:

  • 不管怎样,Modernizr 目前最高到 2.6.2
  • 尝试在 var items = []; 之后使用 data = $.parseJSON(data);
  • 好的,我会得到相同的结果,但这是任何问题
  • 你把json文件的路径放对了吗?

标签: jquery python django json parsing


【解决方案1】:

使用append()html()li 附加到创建的ul 试试这个

$('<ul/>', {
'class': 'my-new-list'
}).html(items.join('')).appendTo('body');

【讨论】:

  • 您可以通过 get 方法检查您的响应。在var items = []; 之前写入console.log(data) 并检查您是否在控制台中获取了仪式数据
  • 我这样做了,在调用堆栈 4 和第 5 行得到“匿名函数”,断点发生在第 5 行
  • 在控制台窗口中没有显示它是完全空白的
  • 您好,我收到 DOMException 会是什么问题
  • @bipen - 我的想法和你一样,但我很惊讶刚才得知 jQuery 确实 允许你使用 @ 设置元素的内部 HTML 987654328@ 作为 OP 使用。例如,在 JavaScript 控制台中尝试:$('&lt;ul&gt;',{html:'&lt;li&gt;test&lt;/li&gt;'})[0].outerHTML
【解决方案2】:

你的 HTML 都搞砸了。你把所有东西都塞进了&lt;head&gt;,而且你的&lt;button&gt; 上没有ID,所以你的点击处理程序永远不会设置。也没有 doctype,没有 &lt;html&gt; 元素,也没有 &lt;title&gt; 元素。首先,试试这个:

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    {% block js-custom %}
    {% load static %}
    <script src="{{ STATIC_URL }}scripts/jquery-1.9.1.min.js"></script>
    <script src="{{ STATIC_URL }}scripts/modernizr-2.0.6.min.js"></script>
    <script src="{{ STATIC_URL }}scripts/myscript.js"></script>
    {% endblock %}
</head>
<body>
    <button id="loadjson">Load JSON</button>
</body>
</html>

另一个提示:您可能试图通过同时处理 Python 代码 HTML/JavaScript 来一次性解决太多问题。如果我这样做,我会从使用静态 HTML、JavaScript 和 JSON 文件开始。没有 Python,只有静态文件,您可以直接编辑,查看其中的确切内容,并使用浏览器的开发人员工具进行调试。 (我最喜欢的是 Chrome,或者您可以将 Firefox 与 Firebug 或最新版本 IE 中的内置开发人员工具一起使用。)

另外,在测试时使用 jQuery 和 Modernizr 的非缩小版本。这样您将看到有意义的代码和堆栈跟踪。

并使用W3C Validator 验证您的 HTML。

在您使用静态文件后,让您的 Python 代码生成相同的内容。这比试图同时找出双方更容易。

再想一想,如果您是 Python 专家并且唯一真正的问题是 HTML/JavaScript 方面,那么静态文件的想法可能并不那么重要。但至少您应该使用查看源代码和开发工具查看浏览器中的内容,因为这就是浏览器所看到的全部内容。它根本看不到您的 Python 代码,只看到从中生成的代码。

顺便说一句,这是一个很棒的introduction to the Chrome DevTools。还可以阅读Mozilla Developer Network (MDN) 上的优秀文档。事实上,当您在 Google 上查找任何与 HTML/CSS/JS 相关的项目时,将“mdn”添加到您的搜索以确保它为您找到 MDN 文档很有用,因为它们通常是最好的——任何主题的高质量文档。

【讨论】:

  • 如果你不明白答案,你应该在尝试任何类型的 javascript 或 ajax 之前学习html
  • 您没有发布 views.py 文件,但我会先跳过该文件,然后让客户端使用静态文件。请参阅我的更新答案以获取建议。
  • @Michal geary 太好了,我从你那里得到了很多东西,我会遵循的,很抱歉我没有在 views.py 中编写函数来执行此操作。
  • 不需要道歉,我的朋友!到目前为止,我很高兴这对您有所帮助 - 如果有任何其他问题,请及时回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多