0

JavaScriptを使用してWindowsストアアプリを開発しています。私はWCFサービスを展開し、wcfサービスからデータを取得できました.私の問題は、データがコントロールにバインドできないことです(ここではドロップダウンボックスが1つしかありません)。

<body onload="onLoad()">

 <select id="CbxArea" style="width: 200px" data-win-bind="textContent: AreaName">
    <option>Select Area</option>
</select>
<script type="text/javascript">
    function onLoad() {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function () {                
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        //var Items = JSON.parse(xmlhttp.responseText);<--Frist Way
                var Items = window.toStaticHTML(xmlhttp.responseText);<--Second Way

                for(var i=0;i<Items.length;i++)
                {
                document.getElementById('CbxArea').innerHTML = '<option>' + Items+'</option>';
                }
            }
            else {
                document.getElementById('CbxArea').innerHTML = '<option>' + 'Error' + '</option>';
            }
        }
        xmlhttp.open("POST", "WCFService_url", true);
        xmlhttp.send();

    }
</script>
</body>

json.parse と windows.toStaticHTML を使用してみましたが、データをドロップダウンにバインドできません。解決策を教えてください。大歓迎です。

4

1 に答える 1

0

まず、以下のように WCF を定義する必要があります

 [OperationContract]
 [WebInvoke(UriTemplate = "/GetAreaNames", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
 List<Area> GetAreaNames();

または複数のパラメータの場合

[OperationContract]
[WebInvoke(UriTemplate = "/ExcelDataInfo?area={area}&month={month}", RequestFormat =WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
   void ExcelDataInfo(string area, string month);

スクリプトページの後

var xmlhttp;

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var Items = JSON.parse(xmlhttp.responseText);
        var data = Items;
        var options;
        var length = Items.GetAreaNamesResult.length;
        for (var i = 0; i < length; i++) {
            $("#CbxArea").append("<option>" + Items.GetAreaNamesResult[i].AreaName + "</option>");//GetAreaNamesReult is your method and AreaName is variable
        }
        document.getElementById('CbxArea').selectedIndex = 1;
    }
    else {
        document.getElementById('CbxArea').innerHTML = '<option>Select Area</option>';
    }
}
xmlhttp.open("POST", "WCFService_url", true);
xmlhttp.send();

以下のような複数のパラメータを渡すため

  var url = "http://localohost:8090/ExcelDataInfo?area=" + area + "&month=" + month;
于 2013-06-25T11:57:38.690 に答える