1

我有 2 列的 SP2010 列表。

  1. 标题[文字]
  2. 计数 [数字]

我想使用 jQuery 将“Count”列的值更新为 +1,其中“ID”=“Something”(在此处使用项目 ID)。有人可以帮我取悦吗?任何代码片段将不胜感激。

我正在尝试这个,但似乎“计数”没有增加

<script src="/SiteAssets/Scripts/jquery-1.3.2.min.js"></script>
<script src="/SiteAssets/Scripts/jquery.SPServices-0.6.2.min.js"></script>

<script>

function UpdateCount(itemID)
{

var query = "<Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + itemID + "</Value></Eq></Where></Query>";
var count;

$().SPServices({
operation: "GetListItems",
async: false,
listName: "CorpDir_Usage",
CAMLQuery: query,
completefunc: function(xData, Status) {
$(xData.responseXML).find("z\\:row").each(function() {
    count = $(this).attr('ows_Count');
});
}
});

$().SPServices({
operation: "UpdateListItems",
async: false,
batchCmd: "Update",
listName: "CorpDir_Usage",
ID: itemID,
valuepairs: [["Count", count++]],
completefunc: function(xData, Status) {

}
});

}</script>


<script type="text/javascript">

    $(document).ready(function(){
        $("#ctl00_m_g_0b30e73d_3ca6_4db1_9760_0e5518e15614_ctl00_btnSimpleSearch").click(function(){
            UpdateCount(1);
        });
    });

</script>
4

1 回答 1

1

您可以使用 Firebug 和 Firefox 来调试您的代码。使用这个插件,您可以看到发送到服务器的 Ajax 请求及其响应。这样,您将能够查看是否有问题以及服务器所说的内容。

另外我认为“计数”需要被解析为一个数字。

(请注意,您使用的是非常非常旧的 jQuery 版本,而 SPServices 无法在这个非常旧的版本上正常工作......而且您使用的是旧版本的 SPServices......)

否则,我认为最好在任何地方使用异步。我不使用 SPServices,但我认为您的代码应该更像这样:

<script src="/SiteAssets/Scripts/jquery-1.3.2.min.js"></script>
<script src="/SiteAssets/Scripts/jquery.SPServices-0.6.2.min.js"></script>

<script>

function UpdateCount(itemID) {
  var query = "<Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + itemID + "</Value></Eq></Where></Query>";
  var count;

  $().SPServices({
    operation: "GetListItems",
    listName: "CorpDir_Usage",
    CAMLQuery: query,
    completefunc: function(xData, Status) {
      $(xData.responseXML).find("z\\:row").each(function() {
        count = $(this).attr('ows_Count');
        count = 1*count; // we need to make sure it's parsed as a number
        $().SPServices({
          operation: "UpdateListItems",
          batchCmd: "Update",
          listName: "CorpDir_Usage",
          ID: itemID,
          valuepairs: [["Count", ++count]],
          completefunc: function(xData, Status) { alert("Count updated to "+count) }
        });

      });
    }
  });
}
</script>


<script type="text/javascript">
$(document).ready(function(){
    $("#ctl00_m_g_0b30e73d_3ca6_4db1_9760_0e5518e15614_ctl00_btnSimpleSearch").click(function(){
        UpdateCount(1);
    });
});
</script>

我创建了一个具有不同语法的库。如果你想试一试,它叫做SharepointPlus,你的代码看起来像这样:

<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="sharepointplus-3.0.5.min.js"></script>

<script>
function UpdateCount(itemID) {
  // find Count
  $SP().list("CorpDir_Usage").get({fields:"Count",where:"ID = "+itemID}, function(data) {
    if (data.length===0) alert("No item with this ID!")
    else {
      var count = data[0].getAttribute("Count")*1; // parse it as a number
      // we update Count
      $SP().list("CorpDir_Usage").update({ID:itemID, Count:++count}, {
        error:function(items) { if (items.length > 0) alert("Error: Count has not been updated!") },
        success:function(items) { if (items.length > 0) alert("Count updated!") }
      });
    }
  })
}
</script>


<script type="text/javascript">
$(document).ready(function(){
    $("#ctl00_m_g_0b30e73d_3ca6_4db1_9760_0e5518e15614_ctl00_btnSimpleSearch").click(function(){
        UpdateCount(1);
    });
});
</script>
于 2013-09-26T08:15:32.187 回答