web-dev-qa-db-ja.com

OData substringofまたはすべてのアイテムを返すことから始まります

RestCallからの結果をフィルタリングしようとしています。

$.ajax({
    type: "GET",
    headers: {
        "Accept": "application/json;odata=verbose"
    },
    dataType: "JSON",
    url: _spPageContextInfo.webServerRelativeUrl + "/_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$startswith('Title','" + request.term + "') eq true",
    success: function (data) {
    },
    error: function (ex) {
    }
});

連絡先リストで、文字列で始まるアイテム、または文字列がどこかにあるアイテムのタイトルとIDを取得しようとしています。たとえば、これは誰かの名前です。

Substringofでも試してみました:

"/_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$substringof(" + request.term + ",'Title') eq true"

これも同じ結果をもたらします。

リストからすべてのリストアイテムが表示され、フィルタリングは適用されません。ここを見た後、残りのURLを作成します SharePoint2013を使用したプログラミングREST service そこにあるスキーマのように、URLは問題ないように見えますが、そうではないようです:)

編集:

OData Uri規則のように$filterを適用すると、次のエラーが発生します。

{"error":{"code":"-1, Microsoft.SharePoint.SPException","message":{"lang":"en-US","value":"The query is not valid."}}}

次のクエリ文字列で試してみました。

_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof(m,'Title') eq true

_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof('m','Title') eq true

_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof('m',Title) eq true
8
Mark

「eqtrue」を削除したときに正しい結果を返すsubstringofでフィルターを取得することができました。

クエリ文字列の1つを使用すると、次のように機能するはずです。

_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof('m',Title)

他の関数はチェックしていませんが、少なくとも、startswith関数でも同じことが起こります。

15
nersofiripi

この質問を見ている人のために、私はそれを報告することができます

/_api/web/lists/GetByTitle('Applications')/items?$filter=startswith(Title,'1AAJ') 

私のために働いています。

6
Keith Hudson

エンドポイントでクエリURIを試し、いくつかの変更を適用しました。-部分文字列の2番目のパラメータは文字列であってはならないため、アポストロペを削除しました

この後、私は結果を得る:

http://jaydata.org/examples/Northwind.svc/Products ?$ select = Product_ID、Product_Name&$ filter = substringof( 'CH'、Product_Name)

私のエンドポイントは標準のWCFデータサービスであり、フィルターは機能しています。

URIを変更してもすべてのレコードが返される場合は、SherePointのトリックだと思います。 'zzz'またはランダムな文字列をフィルターに入れるとどうなりますか?

0
Robesz

http://www.odata.org/documentation/odata-v2-documentation/uri-conventions/ で正しいURI規則を確認してください。

する必要があります

/_api/lists/getByTitle('Contacts')     
/items?$select=Title,Id&$filter=substringof(" + request.term + ",'Title') eq true"

したがって、$ filterが含まれています

0
Rolfvm