2016-08-30 4 views
0

탐색 템플릿이 포함 된 Windows 응용 프로그램 (winjs)에서 작업 중입니다. 모든 작업은 지원자/후보자의 home.html 페이지 목록에서 응용 프로그램을 열 때 수행해야합니다. 여기에 내가 작업하고있는 코드가 있습니다. 그러나 그것은 대해 forEach와 나 진통, HTML 코드WinJS "forEach"정의되지 않음

<section class="page-section" aria-label="Main content" role="main"> 
     <div id="headerTemplate" data-win-control="WinJS.Binding.Template"> 
      <div> 
       <p data-win-bind="innerText:firstLetter"></p> 
      </div> 
     </div> 
     <div id="ApplicantTemplate" data-win-control="WinJS.Binding.Template"> 
      <div data-win-bind="onclick:clickFunction"> 
       <div class="appId" data-win-bind="innerText:ApplicantId"></div><br /> 
       <div class="appName" data-win-bind="innerText:ApplicantName"></div> 
      </div> 
     </div> 
     <div id="ApplicantListView" 
      data-win-control="WinJS.UI.ListView"></div> 
    </section> 

이것이 JSON 데이터

사람이에 도움이 될 수 있다면하시기 바랍니다
<?php 

header('Allow-Control-Allow-Origin:*'); 

$database = mysqli_connect('localhost','root','','tech_m'); 
$query = "SELECT * from `applicant_table`"; 
$rs = mysqli_query($database, $query); 

while($assoc = mysqli_fetch_assoc($rs)){ 
    //echo "Access Granted"; 
    $ApplicantId = $assoc['app_id']; 
    $ApplicantName = $assoc['app_name']; 

    $rows[] = array('ApplicantId' =>$ApplicantId ,'ApplicantName' =>$ApplicantName); 
} 
$response['rows'] = $rows; 
$encodedfile = json_encode($response); 
echo $encodedfile; ?> 

를 생성 내 PHP입니다에게

(function() { 
"use strict"; 

WinJS.UI.Pages.define("/pages/startpage/startpage.html", { 
    // This function is called whenever a user navigates to this page. It 
    // populates the page elements with the app's data. 
    ready: function (element, options) { 
     // TODO: Initialize the page here. 
     var titlesListGrouped = new WinJS.Binding.List().createGrouped(
      function (i) { return i.ApplicantName.charAt(0).toUpperCase(); }, 
      function (i) { return { firstLetter: i.ApplicantName.charAt(0).toUpperCase() }; } 
     ); 
     var list = q("#ApplicantListView").winControl; 
     list.itemDataSource = titlesListGrouped.dataSource; 
     list.itemTemplate = q("#ApplicantTemplate"); 
     list.groupDataSource = titlesListGrouped.groups.dataSource; 
     list.groupHeaderTemplate = q("#headertemplate"); 

     WinJS.xhr({ url: "http://localhost/applicants/processing/getapplicant.php", }) 
      .then(function (xhr) { 
       var applicants = JSON.parse(xhr.response).d; 
       applicants.forEach(function (i) { 
        var item = { 
         ApplicantId: i.ApplicantId, 
         ApplicantName: i.ApplicantName, 
         clickFunction: function (args) { WinJS.Navigation.navigate("/pages/details/details.html", item); } 
        }; 
        item.clickFunction.supportedForProcessing = true; 
        titlesListGrouped.push(item); 
       }); 
      }); 
    }, 

    unload: function() { 
     // TODO: Respond to navigations away from this page. 
    }, 

    updateLayout: function (element) { 
     /// <param name="element" domElement="true" /> 

     // TODO: Respond to changes in layout. 
    } 
});} 

정의되지 않은되고 그것은 큰 도움이 될 것입니다.

+0

'JSON.parse (xhr.response) .d'의 경우 왜'.d' 부분이 있습니까? 입력 오류입니까? –

+0

[나는이 예를 따른다] (http://www.codefoster.com/win8pagenav/) @ ElvisXia-MSFT –

답변

0

여기 내 코드입니다. 하지만 그것은 나를 위해 나를 던졌습니다. 각 정의되지 않습니다.

PHP 코드에서 반환하는 Json 객체는 $response['rows'] = $rows;입니다.

그래서 JSON 객체에는 속성 행 인 배열이 있습니다. 그러나 귀하의 JS 코드에서 d 속성이없는 JSON.parse(xhr.response).d을 사용하여 arrary를 검색 할 수 있습니다.

은 단순히 아래 코드에 var applicants=JSON.parse(xhr.response).d;을 수정할 수 있습니다,이 문제를 해결하려면, 난 당신이 게시 된 링크를 확인

var applicants = JSON.parse(xhr.response).rows; 

. 그것은 dataSource가 어떻게 생겼는지 이야기하지 않았습니다. 그래서 나는 JSON.parse(xhr.response).d이 그 블로그의 데이터 배열이라고 생각한다.

+0

[이 링크를 시도해보십시오.] (http://www.codefoster.com/netflixstage1) @ ElvisXia-MSFT –

+0

json 형식의 데이터를 가져 오려고하면 forEach 오류가 발생합니다. 데이터의 xml 형식을 얻으려고하면 모든 것이 제대로 작동하지만 다시 문제가 발생하여 div에 대한 링크가 바인딩되지 않습니다. –

+0

모두 맞아, 알았다. 'JSON.parse (xhr.response) .d;에서 오는'신청자 '를 디버그 해 주실 수 있습니까? 내부 내용을 참조하십시오. 'JSON.parse (xhr.response) .d.rows'가 작동 할 것입니다. –