SharePoint在线2013 Page代码嵌入和JavaScript - 输出消失
-
29-09-2020 - |
题
我注意到我无法在SPO 2013 Web零件页面中嵌入内联的JavaScript,但可以引用库。
我正在从该js输出表。如果我把表格显示的警报,但是在代码收益后消失。
在没有JSRENDER的任何方法?
嫌疑表需要在嵌入式标记代码中。
这是jQuery库中的函数,我参考siteassets。
$.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。
您可以使用PopportOut.js并在可观察的阵列中使用foreach
循环填充数据。在网页中,您需要映射敲除数据成员。
这很好,因为您将使用面向对象的JavaScript和MVVM。和代码少一点。请检查以下代码:
javascript:
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 lem ..我已经更新了它。请检查。