2011-10-07 4 views
0

背景::私のページに2回のドロップダウンがあり、変更されたときにAEFXXのJQoteプラグインを使用して表を作成しています返されたJSONデータの一部が含まれています。 JSONレスポンスでは、User Storiesの中にはTasksが関連付けられているものもありますが、これらのタスクにはあまり情報がありません。したがって、この情報を返すためにTaskごとにGETリクエストを追加する必要がありました。返されるタスクの中には、Ownerが割り当てられていないものがあり、その結果、Task.Owner = nullフィールドになります。ここでJSON要素がnullのため、JQote2の「Uncaught TypeError:<unknown message TemplateExecutionError>」

は、私は、タスクのそれぞれを取得するために使用しているコードです:

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> 

裁判: 私はHow to test an empty Object from JSONを参照しました。

私は次の関数を追加しました:このことをGETの成功の機能を変更し、

 function isEmpty(obj) { 
      for (var prop in obj) { 
       if (obj.hasOwnProperty(prop)) 
        console.log("false"); 
        return false; 
      } 
     } 

を:

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> 
私は可能null値を占め、またはAJAXの成功機能を変更するためにtask.tplの最後の部分を修正することができますどのように :

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 

質問:0

が、私はまだエラーを取得していますこのケースを正しく処理するには?私はまだテンプレートファイルはいえ、この問題を処理するように変更された溶液に興味

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); 
    }); 
} 

答えて

0

は、私が以前にしようとしていたものと同様である解決策を見つけました。

別の回答がある場合は投稿してください。