我有2列的SP2010列表。
我想使用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>
答案 0 :(得分:1)
您可以使用Firebug和Firefox来调试代码。使用此插件,您可以看到发送到服务器的Ajax请求及其响应。就像那样,你将能够看到出现了什么问题以及服务器说的是什么。
另外我认为“count”需要解析为数字。
(请注意,您使用非常旧版本的jQuery,而SPServices无法正常使用这个非常旧的版本...还使用旧版本的SPServices ...)
否则,我认为最好在任何地方使用async。我不使用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>