使用Ajax访问查询数据WIQL的设备

问题描述 投票:0回答:1

我正在尝试使用Ajax访问azure-devops数据。下面是我的工作代码。

 $.ajax({
            url: 'https://dev.azure.com/ORG/products/_apis/wit/workitems/2065741?$expand=all&api-version=5.1',
            dataType: 'json',
            headers: {
                'Authorization': 'Basic ' + btoa("" + ":" + 'XXXX')
            }
        }).done(function( results ) {

        });

我需要使用WQIL访问数据后,但是它给出了意外的令牌错误。我要访问WorkItem和用户活动。您能帮忙吗?

$.ajax({
            url: 'https://dev.azure.com/ORG/products/_apis/wit/wiql?api-version=5.1 ',
            dataType: 'json',
            headers: {
                'Authorization': 'Basic ' + btoa("" + ":" + 'XXXX')
            },
            JSON.Stringfy("QUERY":"SELECT     [System.Id],    [System.WorkItemType],    [System.Title],    [System.AssignedTo],    [System.State],    [System.Tags] FROM workitemLinks WHERE " +
    "(         [Source].[System.TeamProject] = @project        AND [Source].[System.WorkItemType] = 'User Story'      )     AND (         [System.Links.LinkType] = 'System.LinkTypes.Hierarchy-Forward'    ) "+
    " AND (         [Target].[System.TeamProject] = @project         AND [Target].[System.WorkItemType] = 'Task'     ) ORDER BY [System.Id] MODE (MustContain)")
        }).done(function( results ) {
         x=results
        });
azure-devops devops agile azure-devops-rest-api
1个回答
1
投票

您正在使用的先前脚本是用于执行API的方法,但不是适合用于执行WIQL脚本的方法。这就是您面对该错误的原因。

WIQL中执行Ajax实际上是一个[[request]]进程:wiql语句发送到您要访问的服务器,请求执行查询语句(Wiql),并返回执行结果。因此,这是一个请求执行Post命令的过程。但是在您的脚本中,它没有告诉服务器需要执行哪些指令。这是简单的示例,您可以参考使用WIQLAjax

<script type="text/javascript"> $(document).ready(function () { $("#SelectWIT").on("click", function () { var d = { "query": " Select [System.Id] from WorkItems Where [System.WorkItemType] = 'Bug' "}; $.ajax({ type: 'POST', url: 'https://dev.azure.com/{org name}/{project name}/_apis/wit/wiql?api-version=1.0', contentType: 'application/json', data: JSON.stringify(d), cache: false, dataType: 'json', beforeSend: function (xhr) { xhr.setRequestHeader("Authorization", "Basic " + btoa("" + ":" + "{PAT token}")); }, }).done(function (data) { var items = []; $.each(data.workItems, function (key, val) { items.push("<li> <a href='" + val.url + "'>" + val.id + "</a></li>"); }); $("<ul/>", { html: items.join("") }).appendTo("body"); }).error(function (e) { var s = "error error error"; }); }) }); </script>

我的脚本的逻辑是请求使用

WIQL

语句作为请求正文来运行API,并将此请求发送到我要访问的项目。然后将使用js语法的响应数据显示到页面正文中。这是输出:enter image description here由于我不确定您的下一个操作是什么。您可以在此脚本中用自己的替换Wiql语句和Url。然后更改相应的完成功能以实现所需的功能。
© www.soinside.com 2019 - 2024. All rights reserved.