【问题标题】:jquery spservices update listitemjquery spservices 更新列表项
【发布时间】:2013-07-24 12:27:41
【问题描述】:

我正在尝试使用 jquery spservices 更新列表项。一切正常,但是当我尝试向richtextfield 添加href 时,它不起作用。它只更新纯文本而不是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它不起作用。任何人都知道如何解决?提前感谢

【问题讨论】:

  • 为什么双引号前有反斜杠?另外,当您说它不更新 href 时,您是指仅 href 属性,还是整个锚标记?当您说它“不起作用”时,您的意思是该值根本没有改变,还是您将锚标记视为文本而不是 html 锚标记?
  • 因为我什么都试过了。我在互联网上找到并尝试了它,但没有奏效。关于href:该字段为空。它没有任何价值。但是当我不使用href时是可以的。问题是我需要用href更新它。
  • 我认为您的意思是您需要使用&lt;a&gt;anchor 甚至“链接”来更新该字段。 href 只是锚标签的一个属性。抱歉,如果我似乎在吹毛求疵,但这会让您不清楚您的实际要求。如果您使用&lt;a&gt; 手动更新该字段,它是否可以正常工作?这是一个帖子,建议您不能编辑富文本字段的 HTML,而需要使用“增强”来代替:sharepoint.stackexchange.com/questions/17269/…

标签: jquery listitem spservices


【解决方案1】:

我在 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);
        }
    });

} 

【讨论】:

    【解决方案2】:

    这是实际的解决方案。在提交到 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 传输。

    我希望这对某人有帮助!

    【讨论】:

      【解决方案3】:

      您需要对 html 代码进行编码(将字符 替换为 JavaScript:转义特殊字符,&amp;lt;&amp;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, '&amp;')
              .replace(/"/g, '&quot;')
              .replace(/'/g, '&#39;')
              .replace(/</g, '&lt;')
              .replace(/>/g, '&gt;');
      }
      

      最好的问候

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多