【问题标题】:Cant retrieve SPList items using javascript无法使用 javascript 检索 SPList 项目
【发布时间】:2012-09-14 18:06:08
【问题描述】:

我正在尝试使用 javascript 在 Sharepoint 列表中搜索名为“John”的人。似乎查询失败,因为我收到错误警报:请求失败。一种或多种字段类型未正确安装。转到列表设置页面以删除这些字段。未定义

这表明脚本以 onQueryFailed() 方法结束。我找不到 CAML 有任何问题,并且使用了内部列名。

来自 .aspx 的代码:

<script type="text/javascript">
            function MyJavascript() {
            var siteUrl = '/sites/MySite/';
            var clientContext = new SP.ClientContext(siteUrl);
            var oList = clientContext.get_web().get_lists().getByTitle('People');

            var camlQuery = new SP.CamlQuery();
            camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name="\'Name\'"/>' +
            '<Value Type=\'Text\'>John</Value></Eq></Where></Query></View>');
            this.collListItem = oList.getItems(camlQuery);

            clientContext.load(collListItem);
            clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));

        }

        function onQuerySucceeded(sender, args) {
            var listItemInfo = '';

            var listItemEnumerator = collListItem.getEnumerator();
            while (listItemEnumerator.moveNext()) {
                var oListItem = listItemEnumerator.get_current();
                listItemInfo += '\nID: ' + oListItem.get_id() +
                '\nName: ' + oListItem.get_item('Name') +
                '\nAge: ' + oListItem.get_item('Age');
            }

            alert(listItemInfo.toString());
        }

        function onQueryFailed(sender, args) {
            alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
        } 

        </script> 

将脚本注册到按钮的 .cs 代码:

SubmitButton.Attributes.Add("onclick", "MyJavascript(); return false;");

有什么想法吗?

【问题讨论】:

  • 您要查询的字段的内部名称是什么?你确定是Name
  • @Servy 是的,内部名称是Name。
  • 您可以使用 Web 浏览器访问 SharePoint 上的列表并进入此列表吗?如果可以接受,请尝试将Name 字段的名称更改为更独特的名称,例如PersonName,以确保您没有使用保留字段名称。
  • 谢谢,但我自己解决了。 FieldRed 参数中存在错误的引号。

标签: c# javascript asp.net .net caml


【解决方案1】:

尝试将ExecuteOrDelayUntilScriptLoaded(MyJavaScript, "sp.js"); 直接放在您的siteUrl 变量下方。

【讨论】:

    猜你喜欢
    • 2012-01-30
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多