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
「eqtrue」を削除したときに正しい結果を返すsubstringofでフィルターを取得することができました。
クエリ文字列の1つを使用すると、次のように機能するはずです。
_api/lists/getByTitle('Contacts')/items?$select=Title,Id&$filter=substringof('m',Title)
他の関数はチェックしていませんが、少なくとも、startswith関数でも同じことが起こります。
この質問を見ている人のために、私はそれを報告することができます
/_api/web/lists/GetByTitle('Applications')/items?$filter=startswith(Title,'1AAJ')
私のために働いています。
エンドポイントでクエリURIを試し、いくつかの変更を適用しました。-部分文字列の2番目のパラメータは文字列であってはならないため、アポストロペを削除しました
この後、私は結果を得る:
http://jaydata.org/examples/Northwind.svc/Products ?$ select = Product_ID、Product_Name&$ filter = substringof( 'CH'、Product_Name)
私のエンドポイントは標準のWCFデータサービスであり、フィルターは機能しています。
URIを変更してもすべてのレコードが返される場合は、SherePointのトリックだと思います。 'zzz'またはランダムな文字列をフィルターに入れるとどうなりますか?
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が含まれています