我正在尝试使用jquery spservices更新listitem。一切正常,但当我尝试将一个href添加到richtextfield时它不起作用。它只更新纯文本而不是href。 下面是代码,它只是一个测试,所以这些网址用于测试。
function fn_UpdateListItem(){
$().SPServices({
operation: 'UpdateListItems',
listName: 'Bedrijven',
ID: 1,
valuepairs: [["Software", "<a href='http://www.google.nl'>its a test.</a>"]],
completefunc: function(xData, Status) {
alert('test complete');
}
});
}
如果我将值对更改为
valuepairs: [[\"Software\", \"test\"]],
它可以将测试放在富文本字段中。但是用href它不起作用。有谁知道如何解决?谢谢你的推荐
答案 0 :(得分:2)
我在Sharepoint 2010上遇到了同样的问题,在这种情况下 var dfNotes = CKEDITOR.instances.notes.getData(); 没有为我工作,我发现了这个:
https://msdn.microsoft.com/en-us/library/office/ee658527(v=office.14).aspx
var value = SP.Utilities.HttpUtility.htmlEncode(html);
编辑在 Sharepoint 2016 SharePoint内部部署上进行测试,它也有效,所以我应该适用于 SharePoint Online !
这就是我的工作方式:
function AddListItem(html, list) {
var value = SP.Utilities.HttpUtility.htmlEncode(html);
$().SPServices({
operation: "UpdateListItems",
async: false,
batchCmd: "New",
listName: list,
valuepairs: [["Title", 'Title'], ["Content", value]],
completefunc: function(xData, Status) {
console.log(Status);
}
});
}
答案 1 :(得分:1)
这是实际的解决方案。在提交到SharePoint列表之前,HTML化的数据以XML格式存储,这不会对嵌入的HTML标记产生好处,因此需要对其进行转义。感谢SPServices论坛上的feedback,我能够在上面的示例中确定这种情况。
我修改了我的代码:
var dfNotes = CKEDITOR.instances.notes.getData();
$().SPServices({
operation: "UpdateListItems",
async: false,
batchCmd: "Update",
listName: list,
ID: prog,
valuepairs: [["Notes", $("#notes").text(dfNotes).html()]],
completefunc: function (xData, Status) {
alert($("#notes").html());
}
});
第一行引用包含新修改文本的富文本编辑器字段。请注意valuepairs
行中的细微差别,它现在使用.text().html()
来转义文本,以便通过XML进行传输。
我希望这有助于某人!
答案 2 :(得分:1)
您需要对html代码进行编码(替换JavaScript的字符&lt;和&gt;:转义特殊字符,<
和>
; this is an example of some characters),这样您就可以拥有可以保存在富内容文本字段中的字符串(注释),当项目更新时,您的数据将具有html代码。
这是代码:
function fn_UpdateListItem(){
var link = htmlEscape('<a href='http://www.google.nl'>its a test.</a>');
$().SPServices({
operation: 'UpdateListItems',
listName: 'Bedrijven',
ID: 1,
valuepairs: [["Software", link]],
completefunc: function(xData, Status) {
alert('test complete');
}
});
}
//This function makes the magic
function htmlEscape(str) {
return String(str)
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
}
祝你好运