2

我正在尝试使用 jquery spservices 更新列表项。一切正常,但是当我尝试向richtextfield 添加href 时,它不起作用。它只更新纯文本而不是href。下面是代码,它只是一个测试,所以这些 url 用于测试。

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它不起作用。任何人都知道如何解决?预先感谢

4

3 回答 3

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 On-Premises上测试,它也可以工作,所以我也应该适用于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);
        }
    });

} 
于 2017-03-16T04:01:05.593 回答
1

这是实际的解决方案。在提交到 SharePoint 列表之前,HTML 化的数据存储在 XML 中,这不适合嵌入的 HTML 标记,因此需要对它们进行转义。感谢SPServices 论坛上的反馈,我能够确定我上面的示例中就是这种情况。

我修改了我的代码,如下所示:

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 传输的行的细微差别。

我希望这可以帮助别人!

于 2014-01-30T12:53:57.207 回答
1

您需要对 html 代码进行编码(将字符 < 和 > 替换为 JavaScript:转义特殊字符,&lt;&gt;这是一些字符的示例),这样您就可以在富内容文本字段中保存一个字符串(注意),当项目更新时,您的数据将有一个 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, '&amp;')
        .replace(/"/g, '&quot;')
        .replace(/'/g, '&#39;')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;');
}

此致

于 2014-05-16T17:37:25.063 回答