Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript devops REST API:无法使用修补程序方法更新工作项状态_Javascript_Ajax_Azure Devops_Azure Devops Rest Api_Http Patch - Fatal编程技术网

Javascript devops REST API:无法使用修补程序方法更新工作项状态

Javascript devops REST API:无法使用修补程序方法更新工作项状态,javascript,ajax,azure-devops,azure-devops-rest-api,http-patch,Javascript,Ajax,Azure Devops,Azure Devops Rest Api,Http Patch,我正在使用DevOps restapi获取一些信息。 POST方法对我很有效 我想更新我的工作项的状态。为此,我需要使用补丁方法。这是不起作用的,也不会出现任何错误 对于补丁方法,我修改了一些东西。但不更新我的工作项不会出现任何错误。我还检查了我的令牌访问。我有完全的权限 type: 'PATCH', contentType: 'application/json-patch+json', 我用Ajax中的PATCH编写了一个简单的示例: <script type="text/javas

我正在使用DevOps restapi获取一些信息。 POST方法对我很有效
我想更新我的工作项的状态。为此,我需要使用补丁方法。这是不起作用的,也不会出现任何错误

对于补丁方法,我修改了一些东西。但不更新我的工作项不会出现任何错误。我还检查了我的令牌访问。我有完全的权限

type: 'PATCH',
contentType: 'application/json-patch+json',

我用Ajax中的
PATCH
编写了一个简单的示例:

<script type="text/javascript">
$(document).ready(function () {
    $("#SelectWIT").on("click", function () {
        var json= [{
                "op": "add",
                "path": "/fields/System.State",
                "value": "Closed"
              }];
        $.ajax({
            type: 'PATCH',
            url: 'https://dev.azure.com/{org name}/_apis/wit/workitems/{WIT id}?api-version=5.1',
            contentType: 'application/json-patch+json',
            data: JSON.stringify(json),
            cache: false,
            dataType: 'application/json-patch+json',
            beforeSend: function (xhr) {
                xhr.setRequestHeader("Authorization", "Basic " + btoa("" + ":" + "{PAT token}"));
            },
        }).error(function (e) {
            var s = "error error error";
        });
    })
});
</script>

$(文档).ready(函数(){
$(“#SelectWIT”)。在(“单击”上,函数(){
var json=[{
“op”:“添加”,
“路径”:“/字段/系统状态”,
“值”:“已关闭”
}];
$.ajax({
键入:“补丁”,
网址:'https://dev.azure.com/{org name}/_-api/wit/workitems/{wit-id}?api版本=5.1',
contentType:'应用程序/json修补程序+json',
数据:JSON.stringify(JSON),
cache:false,
数据类型:“应用程序/json修补程序+json”,
发送前:函数(xhr){
setRequestHeader(“授权”、“基本”+btoa(“+”:“+”{PAT令牌}”);
},
}).错误(函数(e){
var s=“错误”;
});
})
});
注意:不仅
contentType
需要设置为
application/json patch+json
,而且在
dataType
中也一样


我使用Fiddler捕捉此操作:

您可以看到工作项状态已成功更新

更新:


我想他们在Azure DevOps文档中对该方法有很多误解。在这里你还可以看到a和an。我想你一般可以这样做:Create=POST和Update=PUTI我用POST方法尝试了同样的方法,但它没有更新。你能在你的补丁中发布你发送的正文吗?@JigarParekh,你可以使用Fiddler捕捉错误。它可以向您显示它未能成功更新工作项的原因。另外,在Fiddler的帮助下,我编写了一个简单的示例,即work Successful now。你可以试试。这对我有用。但在更新状态后,它在ajax中给出了一个错误:“没有从文本到应用程序的转换/json patch+json”@JigarParekh这应该是预期的。它表示未从服务器获取任何内容。你用小提琴手来捕捉这篇文章吗?如果是,您将看到响应体中没有任何内容。因为服务器只是获取post请求并执行它,但没有回复客户端。@JigarParekh,请在回答中查看我的更新图片。您可以看到,当您使用ajax调用api时,服务器没有响应消息(但操作成功)。正如我从谷歌查到的,这似乎是JQuery的默认问题:。与Azure Devops无关。
<script type="text/javascript">
$(document).ready(function () {
    $("#SelectWIT").on("click", function () {
        var json= [{
                "op": "add",
                "path": "/fields/System.State",
                "value": "Closed"
              }];
        $.ajax({
            type: 'PATCH',
            url: 'https://dev.azure.com/{org name}/_apis/wit/workitems/{WIT id}?api-version=5.1',
            contentType: 'application/json-patch+json',
            data: JSON.stringify(json),
            cache: false,
            dataType: 'application/json-patch+json',
            beforeSend: function (xhr) {
                xhr.setRequestHeader("Authorization", "Basic " + btoa("" + ":" + "{PAT token}"));
            },
        }).error(function (e) {
            var s = "error error error";
        });
    })
});
</script>