javascript - 如何过滤显示的 JSON 文件

标签 javascript jquery json ajax api

我正在尝试使用 Outlook API 创建一个 Web 应用程序,该应用程序允许我按姓名搜索特定的 Outlook 联系人。

我对 javaScript 有一点了解,但我之前从未使用过任何 API 或操作过 JSON 文件,所以我浏览了教程来帮助我,并且 我遇到了这个:https://dev.outlook.com/restapi/tutorial/javascript我遵循了这一点,并没有遇到太多麻烦就成功实现了。

简单地说,本教程允许我构建一个应用程序,可以显示用户的最后 10 封电子邮件或该用户的联系人列表,它提供了类似的内容: Contacts displayed 现在我想做的是过滤此显示,并能够搜索类似“给名称包含音节“AG”的联系人”之类的内容。 我尝试尽可能多地理解代码,并且我几乎确定我必须修改显示所有联系人的函数。

所以我所做的是粘贴它,重命名它,但现在我正在努力处理查询参数。

function getUserContacts(emailAddress, callback) {
		  getAccessToken(function(accessToken) {
			if (accessToken) {
			  // Call the Outlook API
			  var callOptions = {
				// Get contacts
				url: apiEndpoint + '/Me/contacts',
				token: accessToken,
				method: 'GET',
				email: emailAddress,
				query: {
				  // Limit to the first 100 contacts
				  '$top': 100,
				  // Only return fields we will use
				  '$select': 'GivenName,Surname,EmailAddresses',
				  // Sort by given name alphabetically
				  '$orderby': 'GivenName ASC'
				}
			  }; 
	
			  makeApiCall(callOptions, function(result, error) {
				if (error) {
				  callback(null, error);
				} else {
				  callback(result.value);
				}
			  });
			} else {
			  var error = { responseText: 'Could not retrieve access token' };
			  callback(null, error);
			}
		  });
		
		}
		

那就是我完全迷失的那一刻,我尝试在查询部分添加 '$where':GivenName='AG' 以及 '$filter':GivenName=' AG',但它们都不起作用。我在网上搜索了答案,但在我创建的每个答案中,JSON 文件都是“可用的”(对我来说,这意味着他们在某处有这种代码:

[ {"name":"联想 Thinkpad 41A4298","website":"google222"}, {“名称”:“联想 Thinkpad 41A2222”,“网站”:“谷歌”} ]

但是我在任何地方都没有这种类型的代码,所以我想知道是否可以像我尝试的那样这样做,或者我是否必须找到一种方法来检索 JSON 文件才能获取某些内容就像上面一样?

尽管我在该领域缺乏经验,但我希望我已经说得足够清楚了,如果您也询问,我很乐意提供更多详细信息/代码!

提前致谢,祝您有美好的一天:)

最佳答案

感谢无用的代码和他的链接,我成功地从 Outlook 沙箱发送了正确的请求(错误是由于过滤器属性必须在 orderby 中首先列出),并通过以下 URL 获得预期的答案:

https://outlook.office.com/api/v2.0/me/contacts?$filter=GivenName eq 'AG-Carto'&$orderby=GivenName ASC&$select=GivenName,Surname,EmailAddresses 

现在我想做的是让我的 javascript 代码正确发送。

所以我知道我必须修改函数的 query{} 部分,我尝试了这个:

                query: {      
              '$filter': 'GivenName eq AG-carto',
              '$orderby': 'GivenName ASC',
              '$select': 'GivenName,Surname,EmailAddresses'
            }

但是当我运行它时,我收到了一个错误的请求错误,我看到js代码发送的url是这个:

https://outlook.office.com/api/v2.0/Me/contacts?%24filter=GivenName+eq+AG-carto&%24orderby=GivenName+ASC&%24select=GivenName%2CSurname%2CEmailAddresses

所以我显然看到它们不一样,而且我不知道如何修改 query{} 部分,以便 js 发送的 URL 与我的工作 URL 相同。如果有人能帮助我,我将不胜感激!

关于javascript - 如何过滤显示的 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42134161/

相关文章:

javascript - 未选中复选框时禁用输入

jQuery . $ ('<img/>' ) 是什么意思?

php - 解码 json 响应并使用 for each 插入

php - Symfony 5 - 使用 json_login 登录;登录过程不工作;

javascript - 在 JS 中按类型拆分长度未知的可能相邻元素的字符串

javascript - 如何从对象函数返回对象 - javascript?

javascript - 如何在 html 页面中处理 jquery?以两个列表为例

json - 在 Erlang 中使用 mochijson2 解码 JSON

javascript - jQuery 延迟三秒后不起作用

javascript - 事件运行结束后清除事件效果