在 jQuery 模板中显示来自 ajax 的 JSON 响应文本

发布于 2024-11-16 10:50:53 字数 1173 浏览 2 评论 0原文

我需要将 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");
   });
}

I need to pass the response from ajax call to a jquery template.The response json is not malformed.I have checked this by using alert statements in the ajax fn.When the response is passed to the template,it does not get recognized.For example,when I use ${field1} in template,nothing gets displayed in the browser.No error messages are displayed at the browser.Can someone help me fix this issue?

Json response from server:

    { 
        "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'
        });
     }

Template:

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

Code to Bind JSON to template:

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

Note: I can't use the following method to bind JSON with template.That's a long story.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南笙 2024-11-23 10:50:53

回调不是这样工作的。您将 info 返回给回调函数,而不是 getinfo

您要么必须执行像您之后建议的那样的操作,要么将 ajax 调用的结果保留在全局变量中,并稍后调用 tmpl 函数,以确保您已经从 ajax 调用中获得了答案。第一条路是要走的路。

That's not how callbacks work. You're returning info to the callback function, and not to getinfo.

You either have to do something like you proposed after, or keep the result from the ajax call in a global var and call the tmpl function after while, to be sure that you have already got the answer from the ajax call. The first way is the way to go.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文