JSON元素为null,导致JQote2的“未捕获类型错误:”

JSON元素为null,导致JQote2的“未捕获类型错误:”,json,null,jqote,Json,Null,Jqote,背景:我的页面上有两个下拉列表,当它们被更改时,我使用AEFXX提供的JQote插件用一些返回的JSON数据填充一个表。在JSON响应中,一些用户情景有与其相关的任务,但是这些任务没有太多的信息,因此我必须为每个任务执行额外的GET请求以返回这些信息。返回的某些任务没有分配所有者,导致Task.Owner=null字段 下面是我用来获取每个任务的代码: if(result.Tasks != ""){ $.each(result.Tasks, function(i, tasks){ co

背景:我的页面上有两个下拉列表,当它们被更改时,我使用AEFXX提供的JQote插件用一些返回的JSON数据填充一个表。在JSON响应中,一些用户情景有与其相关的任务,但是这些任务没有太多的信息,因此我必须为每个任务执行额外的GET请求以返回这些信息。返回的某些任务没有分配所有者,导致Task.Owner=null字段

下面是我用来获取每个任务的代码:

if(result.Tasks != ""){
 $.each(result.Tasks, function(i, tasks){
    console.log(tasks._ref);
    $.ajax({
        url: tasks._ref,
        dataType: 'jsonp',
        jsonp: 'jsonp',
        success: function(data, textStatus, jqXHR) {
            $.get("task.tpl", function(tmpl) {
                $("#reqs").jqoteapp(tmpl, data.Task);
                });
            }
    });
 })
}
模板task.tpl如下所示:

<tr id="infoReturned">
  <td name="id" class="row"><%= this.FormattedID %></td>
  <td name="name" class="row"><%= this._refObjectName %></td>
  <td name="state" class="row"><%= this.State %></td>
  <td name="owner" class="row"><%= this.Owner._refObjectName %></td>
</tr>
,将GET的成功函数修改为:

success: function(data, textStatus, jqXHR) {
 if (isEmpty(data.Task.Owner)){
    $.get("emptyTask.tpl", function(tmpl) {
    $("#reqs").jqoteapp(tmpl, data.Task);
    });                                         
 }
 else {
    $.get("task.tpl", function(tmpl) {
    $("#reqs").jqoteapp(tmpl, data.Task);
    });
 }
}

,并创建了一个新的模板文件emptyTask.tpl,其所有者部分为空:

<tr id="infoReturned">
 <td name="id" class="row"><%= this.FormattedID %></td>
 <td name="name" class="row"><%= this._refObjectName %></td>
 <td name="state" class="row"><%= this.State %></td>
 <td name="owner" class="row"></td>
</tr>
,但我仍然得到了错误:

Uncaught TypeError: <unknown message TemplateExecutionError>
(anonymous function)
$.extend.jqotejquery.jqote2.js:107
$.each.$.fn.(anonymous function)jquery.jqote2.js:76
$.ajax.success.$.each.$.each.$.ajax.successpy2Test.html:155
jQuery.extend._Deferred.deferred.resolveWithjquery-latest.js:1016
donejquery-latest.js:7247
jQuery.ajaxTransport.send.callbackjquery-latest.js:8028
问题:
如何修复task.tpl的最后一部分以考虑可能的空值,或修改AJAX成功函数以正确处理此情况?

找到了一个与我之前尝试的类似的解决方案:

if ((data.Task.Owner) == null){
  $.get("emptyTask.tpl", function(tmpl) {
  $("#reqs").jqoteapp(tmpl, data.Task);
  });                                           
}
else {
  $.get("task.tpl", function(tmpl) {
  $("#reqs").jqoteapp(tmpl, data.Task);
  });
}
我仍然对一个解决方案感兴趣,在这个解决方案中,模板文件被修改以处理这个问题

如果您有其他答案,请发布

if ((data.Task.Owner) == null){
  $.get("emptyTask.tpl", function(tmpl) {
  $("#reqs").jqoteapp(tmpl, data.Task);
  });                                           
}
else {
  $.get("task.tpl", function(tmpl) {
  $("#reqs").jqoteapp(tmpl, data.Task);
  });
}