SharePoint Online 2013 페이지 코드 삽입 및 JavaScript - 출력이 사라집니다.
-
29-09-2020 - |
문제
나는 SPO 2013 웹 파트 페이지에 인라인 JavaScript를 포함 할 수 없지만 라이브러리를 참조 할 수 있습니다.
해당 JS에서 테이블을 출력합니다.테이블이 표시되는 경고를 넣으면 코드가 진행되면 일단 진행하면 사라집니다.
JSreder 없이이 작업을 수행 할 수있는 방법은 무엇입니까?
테이블이 내장 된 마크 업 코드에 있어야합니다.
이것은 jQuery 라이브러리에서의 함수입니다.
$.ajax({
url: 'https://xxxx/SearchValues/' ,
data: 'SearchData=' + searchData,
type: 'GET',
dataType: 'json',
// jsonp: 'jsonp-callback',
success: function (data) {
// alert("before write response");
WriteResponses(data);
},
error: function (x, y, z) {
alert(x + '\n' + y + '\n' + z);
}
});
//Display results in a table
function WriteResponses(SitesList) {
var strResult = "<table border='1px'><th width='20px'>ID</th><th width='100px'>TITLE</th><th
width='100px'>FARM</th><th width='250px'>URL</th><th width='100px'>OWNERS</th><th width='200px'>ADMINISTRATORS</th>";
$.each(SitesList, function (index, oSite) {
strResult += "<tr><td>" + oSite.LS_ID + "</td><td> " + oSite.LS_TITLE + "</td><td>" + oSite.LS_FARM +
"</td><td>" + oSite.LS_SITE_URL + "</td><td>" + oSite.LS_OWNERS + "</td><td>" + oSite.LS_ADMINISTRATORS + "</td></tr>";
});
strResult += "</table>";
$("#divResult").html(strResult);
alert(strResult);
}
}
function WriteResponses(SitesList) {
var strResult = "<table border='1px'><th width='20px'>ID</th><th width='100px'>TITLE</th><th width='100px'>FARM</th><th
width='250px'>URL</th><th width='100px'>OWNERS</th><th width='200px'>ADMINISTRATORS</th>";
$.each(SitesList, function (index, oSite) {
strResult += "<tr><td>" + oSite.LS_ID + "</td><td> " + oSite.LS_TITLE + "</td><td>" + oSite.LS_FARM + "</td><td>" +
oSite.LS_SITE_URL + "</td><td>" + oSite.LS_OWNERS + "</td><td>" + oSite.LS_ADMINISTRATORS + "</td></tr>";
});
strResult += "</table>";
$("#divResult").html(strResult);
}
. 해결책
동일한 결과를 얻는 방법 중 하나는 knockout.js를 사용하는 것입니다.
knockout.js를 사용하고 Observable 배열의 foreach
루프를 사용하여 데이터를 채 웁니다.웹 파트에서 녹아웃 데이터 멤버를 매핑해야합니다.
객체 지향 JavaScript 및 MVVM을 사용하기 때문에 이것은 좋습니다.코드는 거의 없을 것입니다.다음 코드를 확인하십시오.
자바 스크립트 :
var my = my || {}; //my namespace
my.ListItem = function () {
this.LS_ID = ko.observable();
this.LS_TITLE = ko.observable();
this.LS_FARM = ko.observable();
this.LS_SITE_URL = ko.observable();
this.LS_OWNERS = ko.observable();
this.LS_ADMINISTRATORS = ko.observable();
};
//My View Model
my.vm = function () {
var
Listdata = ko.observableArray([]),
PopulateListdata = function(SitesList){
$.each(SitesList, function (index, oSite) {
Listdata.push(new my.ListItem()
.LS_ID(oSite.LS_ID)
.LS_TITLE(oSite.LS_TITLE)
.LS_FARM(oSite.LS_FARM)
.LS_SITE_URL(oSite.LS_SITE_URL)
.LS_OWNERS(oSite.LS_OWNERS)
.LS_ADMINISTRATORS(oSite.LS_ADMINISTRATORS)
}
};
return {
Listdata: Listdata,
PopulateListdata: PopulateListdata
};
}();
my.vm.PopulateListdata(SitesList);
ko.applyBindings(my.vm);
.
html :
<script src='http://knockoutjs.com/downloads/knockout-3.1.0.js" type="text/javascript"></script>
<div id='divResult'>
<table border='1px'>
<th width='20px'>ID</th>
<th width='100px'>TITLE</th>
<th width='100px'>FARM</th>
<th width='250px'>URL</th>
<th width='100px'>OWNERS</th>
<th width='200px'>ADMINISTRATORS</th>
<tbody data-bind='foreach: Listdata'>
<tr>
<td data-bind='text: LS_ID'></td>
<td data-bind='text: LS_TITLE'></td>
<td data-bind='text: LS_FARM'></td>
<td data-bind='text: LS_SITE_URL'></td>
<td data-bind='text: LS_OWNERS'></td>
<td data-bind='text: LS_ADMINISTRATORS'></td>
</tr>
</tbody>
</table>
</div>
.
KO refrence를 첨부하는 것을 잊었습니다.나는 그것을 업데이트했다.확인해주십시오.
제휴하지 않습니다 sharepoint.stackexchange