weixin_33747129 2014-08-08 04:24 采纳率: 0%
浏览 24

jQuery .promise语法错误

I am using jquery .promise for the first time and I am doing something totally wrong. i get a syntax error. Please help. I have a SharePoint site and I am using REST API to query a list. My goal is to get a count of ticket types and to create a jqplot chart. I get a syntax error when i try to use jquery .promise but it looks fine. Any help would be much appreciated.

var ticketArray = new Array();
var myData = new Array();

var i = 0;
$.getJSON("../practice/_vti_bin/ListData.svc/TicketType", function(data) {

    //iterate through all returned Ticket list items and store in an object
    $.each(data.d.results, function(i, result) {
        //get item property
        var TicketObj = {};
        TicketObj.TicketType = result.Title;
        TicketObj.Count = 0;

        ticketArray[i] = TicketObj;
        i++;
    });


    promise = $.ajax({
        type: "GET",
        //dataType: "json",
        url: "../practice/_vti_bin/ListData.svc/TicketingSystems?$select=TypeOfTicket",
        cache: false
    });
    promise.done(function(data) {
            //success : function(data) {
            //iterate through all returned Ticket list items and get count
            $.each(data.d.results, function(i, result) {
                for (var x = 0; x < ticketArray.length; x++) {
                    //console.log("Ticket Type: "+result.TypeOfTicket);
                    if (ticketArray[x].TicketType == result.TypeOfTicket) {
                        ticketArray[x].Count += 1;
                        console.log("Ticket Count: " + ticketArray[x].Count);
                    }
                }
            }); //each()
        )
    };
    promise.done(function(data) {
            $.each(ticketArray, function(index, value) {
                myData.push([ticketArray[index].TicketType, ticketArray[index].Count]);
            });
        )
    };
    //}
    var plot1 = jQuery.jqplot('chart1', [myData], {
        seriesDefaults: {
            renderer: jQuery.jqplot.PieRenderer,
            rendererOptions: {
                showDataLabels: true
            }
        },
        legend: {
            show: true,
            location: 'e'
        }
    }); //end plot1
  • 写回答

2条回答 默认 最新

  • ℡Wang Yan 2014-08-08 11:38
    关注

    Use below script as is and let me know if this is fixed:)
    Add reference to these three scripts:
    1. /_layouts/15/SP.Runtime.js
    2./_layouts/15/SP.js
    3. //ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js

                         <script type="text/javascript">
                    $(document).ready(function () {
                        var ticketArray = new Array();
                        var myData = new Array();
                        getListData('TicketType').then(function (items) {
                            var ListEnumeratorTT = items.getEnumerator();
                            var i = 0;
                            while (ListEnumeratorTT.moveNext()) {
                                var currentItem = ListEnumeratorTT.get_current();
                                var TicketObj = {};
                                TicketObj.TicketType = currentItem.get_item('Title');
                                TicketObj.Count = 0;
                                ticketArray[i] = TicketObj;
                                i += 1;
                            }
                            getListData('TicketingSystems').then(function (items) {
                                var ListEnumeratorTS = items.getEnumerator();
                                var i = 0;
                                while (ListEnumeratorTS.moveNext()) {
                                    var currentItem = ListEnumeratorTS.get_current();
                                    for (var x = 0; x < ticketArray.length; x++) {
                                        if (ticketArray[x].TicketType == currentItem.get_item('TypeOfTicket')) {
                                            ticketArray[x].Count += 1;
                                            }
                                    }
                                }
                                $.each(ticketArray, function (index, value) {
                                    myData.push([ticketArray[index].TicketType, ticketArray[index].Count]);
                                });
                                var plot1 = jQuery.jqplot('chart1', [myData], {
                                    seriesDefaults: {
                                        renderer: jQuery.jqplot.PieRenderer,
                                        rendererOptions: {
                                            showDataLabels: true
                                        }
                                    },
                                    legend: { show: true, location: 'e' }
                                });//end plot1
                            });
    
                        });
                    });
                    function getListData(listTitle, success, error) {
                        var dfd = $.Deferred(function () {
                            var context = SP.ClientContext.get_current();
                            var web = context.get_web();
                            var list = web.get_lists().getByTitle(listTitle);
                            var items = list.getItems(SP.CamlQuery.createAllItemsQuery());
    
                            context.load(items);
                            context.executeQueryAsync(
                              function () {
                                  dfd.resolve(items);
    
                              },
                              function (sender, args) {
                                  dfd.reject(args);
                              }
                            );
                        });
                        return dfd.promise();
                    }
                </script>
    
    评论

报告相同问题?