jQuery Mobile Page - 结构有问题 - 不会触发$ .ajax

时间:2012-08-09 14:51:58

标签: jquery ajax mobile

有这个涉及的代码。该页面列出了由团队成员提交的应用程序,并允许管理员批准或拒绝该应用程序。页面流程为:

  1. 在页面显示中,调用getLeaveDetails()
  2. getLeaveDetails()使用$ .ajax调用/webservices/getPendingLeaveApps.ashx
  3. 成功时,调用showForm(data,textStatus,jqXHR) - 这很好用
  4. showForm在一个内部创建标记 - 这很好用
  5. 在运行时创建的标记包括按钮 - 这很好用
  6. 两个按钮“批准”和“拒绝”调用各自的功能approveLeave(iID)和rejectLeave(iID) - 当然通过ID批准或拒绝 - 这也有效
  7. approveLeave(iID)和rejectLeave(iID)依次使用$ .ajax调用.ASHX页面,将ID作为ASHX的参数传递以处理操作 - 在页面上选择批准或拒绝 - 这不起作用
  8. 我做错了什么?或者有没有人能提出的更好的结构?非常非常欢迎任何帮助。在JS和HTML中根本没有经验。

    非常感谢

    祝福

    艾尔

    <div data-role="page"  id="pLeave" data-add-back-btn="true"  data-back-btn-text="Home">
    <script type="text/javascript">
        $('#pLeave').live('pageshow', function () {
            getLeaveDetails() ;
        }) ;
    
        function getLeaveDetails() {
            $.ajax({
                type: 'POST',
                data: {numRows: 10},
                url: '/webservices/getPendingLeaveApps.ashx', 
                success: function(data, textStatus, jqXHR) {
                    showForm(data, textStatus, jqXHR) ;
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    alert('error' + textStatus + ' ' + errorThrown + ' ' + jqXHR.status + ' ' + jqXHR.statusText + ' ' + jqXHR.data + ' ' + jqXHR.responseText);
                    //$("#result_labels").append('<p> textStatus ' + textStatus + '</p>') ;
                }
            });
        }
    
        function showForm(data, textStatus, jqXHR) {
            $("#resultsArea").html("") ;
            var h = '' ;
            for (i = 0; i < data.length; i++) {
                h = h + '<ul data-role="listview" data-inset="true">' ;
                h = h + '<li>' ;
                h = h + '<p><strong>' + data[i].empName + '</strong></p>' ;
                h = h + '<p><strong>'  + data[i].designation +'</strong></p>' ;
                h = h + '<p><strong> Applied for ' + data[i].noOfDays + ' days of ' + data[i].category + ' leave' ;
                h = h + '<p><strong> From ' + data[i].startDate + ' To ' + data[i].endDate + '</strong></p>' ;
                h = h + '<input type="button" value="Approve" data-inline="true" onclick="approveLeave(' + data[i].id + ');" />' ;
                h = h + '<input type="button" value="Reject" data-inline="true"  onclick="rejectLeave(' + data[i].id + ');" />' ;
                h = h + '</li></ul>' ;
            }
            $("#resultsArea").html(h) ;
            $("#resultsArea").trigger("create");
        }
        function approveLeave(iID) {
            $.ajax({
                type: 'POST',
                data: {id: iID, action: "A"},
                url: '/webservices/mob_processLeave.ashx', 
                success: function(data, textStatus, jqXHR) {
                    //showForm(data, textStatus, jqXHR) ;
                    getLeaveDetails() ;
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    alert('error' + textStatus + ' ' + errorThrown + ' ' + jqXHR.status + ' ' + jqXHR.statusText + ' ' + jqXHR.data + ' ' + jqXHR.responseText);
                    getLeaveDetails() ;
                }
            });
        }
        function rejectLeave(iID) {
            $.ajax({
                type: 'POST',
                data: {id: iID, action: "R"},
                url: '/webservices/mob_processLeave.ashx', 
                success: function(data, textStatus, jqXHR) {
                    //showForm(data, textStatus, jqXHR) ;
                    getLeaveDetails() ;
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    alert('error' + textStatus + ' ' + errorThrown + ' ' + jqXHR.status + ' ' + jqXHR.statusText + ' ' + jqXHR.data + ' ' + jqXHR.responseText);
                    getLeaveDetails() ;
                }
            });
        }
    </script>
    <div data-role="header">
        <h1>Leave Apps</h1>
    </div><!-- /header -->
    <div data-role="content">   
        <div class="content-primary">
            <div id="resultsArea">
            </div>
        </div>
    </div><!-- /content -->
    

1 个答案:

答案 0 :(得分:0)

它现在正在运行 - 真的,非常愚蠢的错误 - 抱歉垃圾邮件这个最有用的组。 传递给mob_processLeave.ashx的参数错误。在开始编码和标准化参数之前编写所有内容的另一个合适示例。应该已经通过“批准”而不是“A”作为第二个参数。

data: {id: iID, action: "approve"},
url: '/webservices/mob_processLeave.ashx',

希望代码片段可以帮助某人。

祝福

艾尔