JQuery模板不适用于$ .get

时间:2015-11-11 13:28:57

标签: javascript jquery json ajax

我使用Jquery模板填充表。在这个模板中,我需要通过ajax调用来使用json文件来填充。

$(document).ready(function() {
    var clientData;

    $.get("/webpro/webcad/lngetusuario", function(data, status){
        clientData = data;
        alert(clientData);
    });
    $("#clientTemplate").tmpl(clientData).appendTo("tbody");

});

<script id="clientTemplate" type="text/html">
    <tr><td> ${usuario} </td><td> ${nome} </td><td> ${setor} </td></tr>
     //{{tmpl($data) "#phoneTemplate"}}
</script>

网址&#39; / webpro / webcad / lngetusuario&#39;生成json文件。

这是代码。我不明白这一点,因为在$ .get语句中,变量clientData具有正确的值json,但在$ .get语句之外(在document.ready上)变量clientData为空。
任何人都可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

这是一个回调&#34;功能&#34;。

代码不按您认为的顺序运行:

$(document).ready(function() {
    var clientData;

    $.get("/webpro/webcad/lngetusuario", function(data, status){
        clientData = data; // This will be run when a response has been received from the server
        alert(clientData);
    });
   // This will run without waiting any reply from the server
    $("#clientTemplate").tmpl(clientData).appendTo("tbody");

});

这是你想要的:

$(document).ready(function() {
    var clientData;

    $.get("/webpro/webcad/lngetusuario", function(data, status){
        clientData = data;
        alert(clientData);
        $("#clientTemplate").tmpl(clientData).appendTo("tbody");
    });

});

答案 1 :(得分:0)

$.get()是异步的。因此$().tmpl()$.get()完成之前执行,导致clientData为空。要解决此问题,请将$().tmpl()置于$.get()回调中。这将确保仅在get请求完成时创建模板。像这样

$.get("/webpro/webcad/lngetusuario", function(data, status){
    clientData = data;
    alert(clientData);
    $("#clientTemplate").tmpl(clientData).appendTo("tbody");
});