0

我正在做一个我想使用 jquery 的项目,但是发现必须在dojo中编写,我以前从未使用过它,并且在网上阅读如何使用它时遇到了一些麻烦.

下面是我使用的代码:

<script>
        window.onload = function() {
            getManager($("#team_name").val());  
        }
        
        function getManager(team) {
            $.ajax({
                type: "POST",
                url: "getManager.php",
                data: {team:team}
            }).done(function( manager ) {
                $("#manager_name").val(manager);
            });
        }
</script>

本质上,有一个下拉<selection>字段,当被选中时(以及在窗口加载时),它应该 根据列出的团队预填充其下方的只读框。请参阅下面的屏幕截图以获得更好的想法:

截屏

我上面的代码适用于 jquery,我似乎找不到dojo的等价物。

这是选择字段的 html:

<select name="team" id="team_name" onchange="getManager(this.value)" type="text" readonly>

这是文本输入字段的 html 代码:

<input name="manager_name" id="manager_name" type="text" readonly/>

代码必须像页面的其余部分一样在 dojo 中编写,除非有办法用 jquery 覆盖 dojo?

4

2 回答 2

1
window.onload = function() {
    getManager(document.getElementById('team_name').value);  
}

function getManager(team) {
    require(["dojo/_base/xhr"], function(xhr){
        xhr.post({
            url:"getManager.php",
            timeout: 4000,
            content: { team:team },
            load: function( manager ){
                document.getElementById("#manager_name").value = manager;
            }
        });
    });
}
于 2013-07-21T13:50:15.800 回答
0

如果您使用的是 dojo 1.7 及更高版本,则无需使用 window.onload() 甚至 dojo.addOnLoad() - 我认为这就是您要寻找的

require(['dojo/dom', 'dojo/domReady!', function(dom) {
  getManager(dom.byId('team_name').value); 
});


function getManager(team) {
  require(['dojo/request/xhr', 'dojo/dom'], function(xhr, dom) {
    xhr.post('getManager.php', {
      method: 'POST',
      data: {team: team}
    }).then(function(manager) {
        dom.byId('manager_name').value = manager;
    }, function(error) {
        console.error('couldn\'t fetch manger!');
    });
  });
}

domReady!- 是一个 AMD 加载的插件,它会等到 DOM 完成加载后再返回

于 2013-07-23T04:19:22.633 回答