在javascript中发布使用json body来休息api的请求

时间:2018-03-06 11:35:48

标签: javascript json rest

我试图通过jira rest api在我的jira应用程序中添加评论问题,我正在使用json正文的html / javascript代码中执行此操作但是我正在提出请求时遇到以下错误

errorMessages”:[“意外字符('Ã'(代码195)):预期有效值(数字,字符串,数组,对象,'true','false'或'null')\ n

{“errorMessages”:[“VALUE_STRING \ n中意外的输入结束\ n在[来源:org.apache.catalina.connector.CoyoteInputStream@7b422cb8;行:1,列:159]”]}

这是我的代码,请考虑我的URL和凭据是否正确。我已尝试在REST客户端中使用相同的URL,凭据和json正文,并且能够在我的JIRA中添加注释问题,任何人都可以告诉在哪里我做错了吗?

<html>
<head>
<meta charset="ISO-8859-1">
<title>Add Comment JIRA REST API</title>
<script type="text/javascript">
function addComment() {
    var xhttp = new XMLHttpRequest();
    var commentJson = '{"body" : “adding comment to the task from client side javascript code”}';
   
    xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4) {
      document.getElementById("demo").innerHTML =xhttp.responseText;
    }
  };
  
    xhttp.open("POST", "URL",true);
    xhttp.setRequestHeader("Content-type", "application/json");
    xhttp.setRequestHeader("X-Atlassian-Token", "nocheck");
    xhttp.setRequestHeader('Authorization', 'Basic'+btoa('username:password')); 
    xhttp.send(commentJson);
}
</script>
</head>
<body>
<h2>Adding Comment</h2>
<button type="button" onclick="addComment()">Add Comment</button>
<p id="demo"> </p>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

好像你传输了一些非有效格式的数据。这意味着您需要使用JSON.Stringify()或对UTF-8中的json数据进行编码。可能JSON.Stringify()会解决这个问题。

答案 1 :(得分:0)

这一行:

var commentJson = '{"body" : "adding comment to the task from client side javascript code"}';

...在第二个内部字符串周围有错误的双引号。确保所有双引号都是直的,而不是左引号或右引号,如下所示:

---
dependencies:
   - { role: project_keys } # Works fine, just reuses a local role

   - name: acm_layout # Doesn't work, but this is what I want to fix
     src: ssh://git@bigcompany.com/acm/acm_layout.git
     scm: git
     version: feature/initialize
     application_storage_dir: "{{base_storage_dir}}"
     application_data_dir: "{{app_data_dir}}"

此外,您可能必须确保您的字符编码匹配,正如whiterabbitj建议的那样,但首先您必须处理使用错误的引号。看起来您正在以UTF-8发送,但服务器将您的数据视为ISO-8859-1。