2011-10-08 37 views
-1

我正在发送JSONP请求,并在结果集中有三种方法。JSONP结果并在该数据上运行多个函数

问题出在第一个函数执行后,其余的都没有。

function syncData(jsonData){ 
    alert('1'); 
    getUnreadNotifications(jsonData.getUnreadNotifications); 
    alert('2'); 
    getActiveCL(jsonData.getActiveCL); 
    alert('3'); 
    getActiveCLI(jsonData.getActiveCLI); 
} 

它只会报警1.然后停止。这是功能...我做错了什么?

function getActiveCL(jsonData2){ 

    var list =$('#ul-cl'); 
    list.empty(); 
    var htmldata = ''; 

    jQuery.each(jsonData2, function() { 
     htmldata += '<li data-theme="a" class="ui-btn ui-btn-up-b ui-btn-icon-right ui-li-has-arrow ui-li ui-li-has-count ui-corner-top"><div class="ui-btn-inner ui-li"><div class="ui-btn-text"><a href="#consideration-list-id-' + this.id + '" class="ui-link-inherit">Table ' + this.table + ' - ' + this.guest_name + ' ' + this.created + ' <span class="ui-li-count ui-btn-up-c ui-btn-corner-all">' + this.items + '</span></a></div><span class="ui-icon ui-icon-arrow-r ui-icon-shadow"></span></div></li>'; 
    }); 
    list.append(htmldata); 
    list.listview(); 
    list.listview('refresh'); 
    $('a[href="#consideration-list-listing"] .ui-li-count').html(jsonData2.length); 
} 
function getActiveCLI(jsonData){ 
    var lists =$('[id^="ul-consideration-list-id-"]'); 
    lists.empty(); 
    alert(jsonData); 
    jQuery.each(jsonData, function() { 
     var list = $('#ui-consideration-list-id-'+ this.cl_id); 
     //timeElapsed = elapsedpretty(this.created); 
     alert(list.size());   
     var htmldata = '<li data-theme="a" class="ui-btn ui-btn-up-b ui-btn-icon-right ui-li-has-arrow ui-li ui-li-has-count ui-corner-top"><div class="ui-btn-inner ui-li"><div class="ui-btn-text"><a href="#item-id-' + this.item_id + '" class="ui-link-inherit">' + this.name + '</a></div><span class="ui-icon ui-icon-info ui-icon-shadow"></span></div></li>'; 
     list.append(htmldata); 
    }); 
    lists.listview(); 
    lists.listview('refresh'); 
} 

function getUnreadNotifications(jsonData){ 
    // Build Lists 
    var appendData = ''; 
    var list = $('#message-ul'); 
    var lastID = 0; 
    var messageCount = []; 
    var currentVal = parseInt($('.nav a[href="#message-listing"] .ui-li-count').html()); 
    jQuery.each(jsonData, function() { 
     appendData +='<li id="mid-'+this.id+'" data-theme="a" class="ui-btn ui-btn-up-b ui-btn-icon-right ui-li-has-arrow ui-li ui-li-has-count ui-corner-top ui-li-static ui-body-a" ><span class="ui-icon ui-icon-alert ui-icon-shadow"></span><div class="ui-btn-inner ui-li ui-li-static ui-body-a"><div class="ui-btn-text">Table '+this.table+' - '+this.created+'</div></div></li>'; 
     lastID = this.id; 
    }); 
    // Prepend new messages 

    list.prepend($(appendData).hide()).children().slideDown(); 
    $('a[href="#message-listing"] .ui-li-count').html(currentVal + jsonData.length); 
    // Set last checked id 
    if(lastID !== 0) localStorage.setItem('last_message_id', lastID); 

    list.listview(); 
    list.listview('refresh'); 
} 

最后是JSON。测试的这一切在jsonlint和验证:

syncData({ 
    "getUnreadNotifications": [ 
     { 
      "id": "98", 
      "message_type_id": "2", 
      "visit_id": "82", 
      "active": "1", 
      "created": "2011-10-07 13:42:21", 
      "table": "2", 
      "rvc_id": "2", 
      "zone": "2", 
      "seat": "1", 
      "guest_name": "Foster Test" 
     }, 
     { 
      "id": "100", 
      "message_type_id": "4", 
      "visit_id": "82", 
      "active": "1", 
      "created": "2011-10-07 16:11:10", 
      "table": "2", 
      "rvc_id": "2", 
      "zone": "2", 
      "seat": "1", 
      "guest_name": "Foster Test" 
     }, 
     { 
      "id": "101", 
      "message_type_id": "5", 
      "visit_id": "82", 
      "active": "1", 
      "created": "2011-10-07 16:11:10", 
      "table": "2", 
      "rvc_id": "2", 
      "zone": "2", 
      "seat": "1", 
      "guest_name": "Foster Test" 
     }, 
     { 
      "id": "102", 
      "message_type_id": "3", 
      "visit_id": "82", 
      "active": "1", 
      "created": "2011-10-07 16:11:11", 
      "table": "2", 
      "rvc_id": "2", 
      "zone": "2", 
      "seat": "1", 
      "guest_name": "Foster Test" 
     }, 
     { 
      "id": "103", 
      "message_type_id": "2", 
      "visit_id": "82", 
      "active": "1", 
      "created": "2011-10-08 13:22:57", 
      "table": "2", 
      "rvc_id": "2", 
      "zone": "2", 
      "seat": "1", 
      "guest_name": "Foster Test" 
     }, 
     { 
      "id": "104", 
      "message_type_id": "4", 
      "visit_id": "82", 
      "active": "1", 
      "created": "2011-10-08 13:22:57", 
      "table": "2", 
      "rvc_id": "2", 
      "zone": "2", 
      "seat": "1", 
      "guest_name": "Foster Test" 
     }, 
     { 
      "id": "105", 
      "message_type_id": "2", 
      "visit_id": "82", 
      "active": "1", 
      "created": "2011-10-08 13:23:08", 
      "table": "2", 
      "rvc_id": "2", 
      "zone": "2", 
      "seat": "1", 
      "guest_name": "Foster Test" 
     } 
    ], 
    "getActiveCL": [ 
     { 
      "id": "9", 
      "visit_id": "82", 
      "created": 1317949631, 
      "items": "6", 
      "table": "2", 
      "guest_name": "Foster Test" 
     } 
    ], 
    "getActiveCLI": [ 
     { 
      "table": "2", 
      "cl_id": "9", 
      "item_id": "100010", 
      "price": "4300", 
      "name": "Anakena" 
     }, 
     { 
      "table": "2", 
      "cl_id": "9", 
      "item_id": "18027", 
      "price": "5500", 
      "name": "Chicken Shashlik" 
     }, 
     { 
      "table": "2", 
      "cl_id": "9", 
      "item_id": "18016", 
      "price": "3500", 
      "name": "Chicken Steak Burger" 
     }, 
     { 
      "table": "2", 
      "cl_id": "9", 
      "item_id": "18018", 
      "price": "3700", 
      "name": "Lamb Sausage Masala Pizza" 
     }, 
     { 
      "table": "2", 
      "cl_id": "9", 
      "item_id": "100370", 
      "price": "4300", 
      "name": "Lamole di Lamole - Chianti Classico D.O.C.G" 
     }, 
     { 
      "table": "2", 
      "cl_id": "9", 
      "item_id": "100460", 
      "price": "4300", 
      "name": "Morande Grand Reserve" 
     } 
    ] 
}); 
+0

您是否检查了javascript控制台的错误? – davin

+0

有些东西在getUnreadNotifications()中抛出一个错误。您可能需要在其中放置一个断点并逐步查看问题所在。 – nrabinowitz

+0

我正在寻找铬检查员和safari检查员,但它不会抛出任何错误。这就是为什么我很困惑,但不好意思钻研getUnread,看看它里面有没有东西。 – Fostah

回答

1

TypeError。你确定你使用的是最新版本的jqm?

您打电话给list.listview();,但list.listview可能是未定义的。所以试图调用undefined作为一个函数抛出一个错误。一旦解释器遇到错误就会停止执行,因此包含警报的其余脚本将不会被调用。

+0

Hrm,当我将列表选择器更改为来自类/后代选择器的id时,我认为这个问题出现了。我在控制台中没有看到出于某种原因的错误。感谢您的帮助,我真的很感激。现在我得弄清楚我的控制台怎么了:) – Fostah

+0

@Fostah,很高兴。它听起来有点腥......如果安装了其他库/依赖项,我在运行代码时没有使用它们,所以也许在代码中错误是不同的。但是,只有你可以知道 - 而且控制台几乎是你的唯一指南。祝你好运。 – davin

1

我究竟做错了什么?

不仔细看错误日志在你的JS控制台发现什么异常被抛出...