【问题标题】:Display JSON response text from ajax in jQuery Template在 jQuery 模板中显示来自 ajax 的 JSON 响应文本
【发布时间】:2011-09-18 08:36:02
【问题描述】:

我需要将来自 ajax 调用的响应传递给 jquery 模板。响应 json 没有格式错误。我已经通过在 ajax fn 中使用警报语句检查了这一点。当响应传递给模板时,它没有得到已识别。例如,当我在模板中使用 ${field1} 时,浏览器中不会显示任何内容。浏览器中不会显示错误消息。有人可以帮我解决这个问题吗?

来自服务器的 JSON 响应:

    { 
        "field1": 23432434, 
        "field2": "sometext",
    }

Ajax fn:

    function getinfo(uri)
    {
        jQuery.ajax({
        url:    'http://{{request.META.SERVER_NAME}}'+uri,
        success: function(info) {
                  return info;
              },
        async:   false,
        dataType: 'jsonp'
        });
     }

模板:

    <script id="infoTemplate" type="text/x-jQuery-tmpl">
            <div>${field1}</div>
   </script>

将 JSON 绑定到模板的代码:

<script id="Template1" type="text/x-jQuery-tmpl">      
      {{tmpl(getinfo(uri)) "#infoTemplate"}} 
</script>

注意:我不能使用下面的方法来绑定 JSON 和模板。说来话长。

function getinfo(uri)
{
    $.getJSON('http://{{request.META.SERVER_NAME}}'+uri, function(data) {
         $("#infoTemplate").tmpl(data).appendTo("#somedivid");
   });
}

【问题讨论】:

  • 尝试使用jsonp作为DataType。
  • @citizen conn - 运气不好!
  • 顺便说一句,您有很多未接受答案的问题。你应该解决这个问题,否则其他用户将来可能不想帮助你。

标签: django jquery jquery-templates


【解决方案1】:

这不是回调的工作方式。您将 info 返回到回调函数,而不是 getinfo

您要么必须执行您之后建议的操作,要么将 ajax 调用的结果保存在全局 var 中并在 while 之后调用 tmpl 函数,以确保您已经从 ajax 调用中得到了答案。第一条路是要走的路。

【讨论】:

  • 我打算返回信息(一个 JSON 对象)并将其作为参数传递给 {{tmpl}}。我不确定这是否是正确的方法。现在,我有选择了我在“笔记”中提到的方法。如果你能解释为什么以前的方法行不通,那将有很大的帮助。
  • 前一个不起作用,因为您的“getinfo”没有返回任何内容。当您执行“返回信息”时;在“成功”上,您将“信息”返回给回调函数,它由 jQuery 调用并丢弃,而不是“getinfo”函数。让我知道这次我是否能够更清楚。
  • 我明白了!谢谢你的解释。
猜你喜欢
  • 2018-02-11
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 2020-12-03
  • 2016-12-28
相关资源
最近更新 更多