背景::私のページに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);
});
}
: