在 mobilefirst 应用程序中尝试从 SQL 数据库获取数据时出错

Error while trying to fetch data from SQL DB in mobilefirst application

我正在使用 mobilefirst studio 6.3.0,这是一个调用了 SQL 适配器的混合 mobilefirst 应用程序。

要显示数据的HTML页面是:

<script>
$.getScript(path + "js/report.js");
</script>

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css">
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>

<div data-role="header">  
            <a href="#" data-role="button" onclick="currentPage.back();">Back</a>
     <!--   <input type="button" class="appButton" value="Back" id="LoadBackButton" onclick="currentPage.back();" /> -->
            <h1>Pocket Doctor</h1>
     <!--   <input type="button" class="appButton" data-role="button" value="User" id="LoadUserButton" onclick="currentPage.user();" /> -->
            <a href="#" data-role="button" onclick="currentPage.user();">User</a>
    </div>  
            <div data-role="content" style="padding: 15px">
                <!--application UI goes here-->
                Welcome to Pocket Doctor! This is report page.



            </div>
     <div data-role="footer">  
        <div data-role="navbar">
           <ul>
           <li><input type="button" class="appButton" data-icon="arrow-r" value="Reservation" id="LoadReservationButton" onclick="currentPage.ReservationClick();" /></li>
           <li><input type="button" class="appButton" data-icon="arrow-r" value="Report" id="LoadReservationButton" onclick="currentPage.ReportClick();" /></li>
           <li><input type="button" class="appButton" data-icon="arrow-r" value="Payment" id="LoadReservationButton" onclick="currentPage.PaymentClick();" /></li>
           <li><input type="button" class="appButton" data-icon="arrow-r" value="Consultation" id="LoadReservationButton" onclick="currentPage.ConsultationClick();" /></li>
           </ul>
        </div>
    </div>  

客户端js文件为:

currentPage={};

currentPage.init = function() {
WL.Logger.debug("report :: init");
};

currentPage.user = function() {
WL.Logger.debug("report :: loadUserProfilePage ");
pagesHistory.push(path + "pages/report.html");
$("#pagePort").load(path + "pages/" + "userProfile.html");
};

currentPage.ReservationClick = function() {
WL.Logger.debug("report :: loadReservationPage ");
pagesHistory.push(path + "pages/report.html");
$("#pagePort").load(path + "pages/" + "reservation.html");
};

/*currentPage.ReportClick = function() {
WL.Logger.debug("report :: loadReportPage ");
pagesHistory.push(path + "pages/report.html");
$("#pagePort").load(path + "pages/" + "report.html");
};*/

currentPage.PaymentClick = function() {
WL.Logger.debug("report :: loadPaymentPage");
pagesHistory.push(path + "pages/report.html");
$("#pagePort").load(path + "pages/payment.html");
};

currentPage.ConsultationClick = function() {
WL.Logger.debug("report :: loadConsultationPage");
pagesHistory.push(path + "pages/report.html");
$("#pagePort").load(path + "pages/consultation.html");
};

currentPage.back = function(){
WL.Logger.debug("Login :: back");
$("#pagePort").load(pagesHistory.pop());
};



currentPage.ReportClick=function()
{
var invocationData = {
    adapter : 'FetchReportInfo',
    procedure : 'procedure1',
    parameters : []
};

WL.Client.invokeProcedure(invocationData,{
    onSuccess : loadSQLQuerySuccess,
    onFailure : loadSQLQueryFailure
});
};

function loadSQLQuerySuccess(result){
WL.Logger.debug("Retrieve success" +  JSON.stringify(result));
displayFeeds(result);
}



function loadSQLQueryFailure(result){
WL.Logger.error("Retrieve failure");
}

function displayFeeds(result){
var input= $('LoadReservationButton');
for (var i = 0; i <result.invocationResult.resultSet.length; i++) {
    var li =    $('<li/>').html(result.invocationResult.resultSet[i].Category);
      li.append($('<li/>').html(result.invocationResult.resultSet[i].result));
    li.append($('<li/>').html(result.invocationResult.resultSet[i].ActualRange));
    li.append($('<hr>'));
    input.append(li);
}
}

调用结果为:

{
"isSuccessful": true,
"resultSet": [
  {
     "ActualRange": "120\/80",
     "Category": "Blood Pressure",
     "result": "100\/60"
  },
  {
     "ActualRange": "60-100",
     "Category": "Heart Rate",
     "result": "58"
  },
  {
     "ActualRange": "12-16",
     "Category": "Respiration Rate",
     "result": "12"
  },
  {
     "ActualRange": "98.6F",
     "Category": "Temperature",
     "result": "98.6F"
  },
  {
     "ActualRange": "70-85mg\/dL",
     "Category": "Glucose",
     "result": "68mg\/dL"
  },
  {
     "ActualRange": "180-200mg\/dL",
     "Category": "Cholesterol",
     "result": "170mg\/dL"
  },
  {
     "ActualRange": "<100mg\/dL",
     "Category": "LDL",
     "result": "80mg\/dL"
  },
  {
     "ActualRange": "40-59mg\/dL",
     "Category": "HDL",
     "result": "45mg\/dL"
  },
  {
     "ActualRange": "4.5-5.7%",
     "Category": "Himoglobin[A1C]",
     "result": "4%"
  },
  {
     "ActualRange": "300-400Ug\/dL",
     "Category": "DHEA",
     "result": "400ug\/dL"
  },
  {
     "ActualRange": "0-2.6ng\/mL",
     "Category": "PSA[Prostate- Specific Antigen]",
     "result": "2.5ng\/dL"
  },
  {
     "ActualRange": "<7.2umol\/L",
     "Category": "Homocysteine",
     "result": "6.2umol\/L"
  },
  {
     "ActualRange": "0.35-2.1mu\/L",
     "Category": "Thyroid Stimulating Harmone[TSH]",
     "result": "1.1mU\/L"
  },
  {
     "ActualRange": "120-175g\/L",
     "Category": "HGB",
     "result": "130"
  },
  {
     "ActualRange": "3.5-11*10^9\/L",
     "Category": "WBC",
     "result": "4.5*10^9\/L"
  },
  {
     "ActualRange": "140-450*10^9\/L",
     "Category": "PLT",
     "result": "300*10^9\/L"
  },
  {
     "ActualRange": "31-53%",
     "Category": "HCT",
     "result": "43%"
  },
  {
     "ActualRange": "normal",
     "Category": "ECG",
     "result": "normal"
  }
  ]
  }

适配器-impl.js是:

var procedure1Statement = WL.Server.createSQLStatement
("SELECT report.Category, userreport.result, report.ActualRange "+
"FROM userreport "+
"JOIN report "+
"ON userreport.category = report.category");
function procedure1() {
return WL.Server.invokeSQLStatement({
    preparedStatement : procedure1Statement,

});
}
function procedure2(param) {
return WL.Server.invokeSQLStoredProcedure({
    procedure : "storedProcedure2",
    parameters : [param]
});
}

我希望代码一切正常,但我无法在应用程序屏幕上获得结果,浏览器的开发人员工具控制台中显示以下错误。

"Initialization option 'connectOnStartup' is deprecated. Use WL.Client.connect() to connect to the IBM MobileFirst Platform Server." worklight.js:5059
 no element found loguploader:1
 no element found loguploader:1

你能告诉我我哪里出错了吗?

您需要将 HTML 中的 UL 替换为 table,然后不附加 LI,您需要附加 TDs 和 TRs,取决于您的 table 的设计。

我建议先用虚拟数据创建静态 table。
然后用来自 JS 的数据替换虚拟数据。