绑定数据Web服务公共URL到excelcontentApp中的下拉列表

时间:2013-02-01 10:10:25

标签: html5 web-services jquery office365

在这里,我创建了Web服务并提供了从数据中获取数据的公共URL。我在office 365开发人员预览(NAPA)default.htm页面中编写了以下代码。

<!DOCTYPE html>
 <html>
 <head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>DemoApplication</title>
<link rel="stylesheet" type="text/css" href="../Content/Office.css" />
<!-- Add your CSS styles to the following file -->
<link rel="stylesheet" type="text/css" href="../Content/App.css" />
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>
<script src="https://appsforoffice.microsoft.com/lib/1.0/hosted/office.js"></script>
<!-- Add your JavaScript to the following file -->
<script src="../Scripts/App.js"></script>
 </head>
 <body onload="GetData()">
    <select id="CbxArea" style="width: 200px">
    <option>Select Area</option>
    </select>
    <input type="button" value="submit" id="btnsubmit"/>        
</div>
  </body>
 </html>

暂停代码写在app.js文件中

Office.initialize = function (reason) {    
};
function GetArea(){
var ddlArea = $("#CbxArea");
        $.ajax({
            type: "POST",
            url: "http://192.168.3.252:8081/HaraveerWCF/ExcelDataService.asmx/GetAreaNames",
            contentType: "application/json; charset=utf-8",
            //url:"ExcelDataService.asmx/GetAreaNames",
            dataType: "json",
            success: function (data) {
            for (i = 0; i < data.d.length; i++) {
                ddlArea.append($("<option></option>").val(data.d[i].AreaName).html(data.d[i].AreaName));
                }
            },
            failure: function (msg) {
                alert(msg);
            }
        });
}

我写错了。请帮帮我。确保总代码只写在线办公室365门户网站帐户。没有用visual studio写的。

3 个答案:

答案 0 :(得分:0)

使用jQuery 1.4+,你可以做到

for (i = 0; i < data.d.length; i++) {
   ddlArea.append($('<option/>', { value : data.d[i].AreaName }).text(data.d[i].AreaName);
}    

答案 1 :(得分:0)

你已经做了一点点,我们可以说override选项html。您正在放置值和每个选项的文本:

for (i = 0; i < data.d.length; i++) {
  ddlArea.append($("<option></option>").val(data.d[i].AreaName)
                                       .text(data.d[i].AreaName));
}

您可以使用$.each()

来实现这一目标
$.each(data.d, function(i, v){
  ddlArea.append("<option></option>").val(v[i].AreaName).text(v[i].AreaName);
});

答案 2 :(得分:0)

当您尝试从Office 365预览网站访问远程地址时,可能会遇到JavaScript跨域数据访问问题。如果对远程地址的请求的返回类型是JSONP,那么您可以覆盖跨域数据访问问题。

如果远程服务器URL返回任何JSONP数据,请检查您的浏览器开发者工具(使用F12键盘快捷键调用它,然后在网络选项卡下查看)或Firefox Firebug。