JIRA Rest API error. Unrecognized token creating a

2019-04-07 16:44发布

问题:

No luck in adding a issue via AJAX and the REST API. I can get it to work with Postmen, unfortunatly, can't get it with an Ajax request.

The JSON I create is fine, the post request also. The issuetype is something I created myself, using Bug gives the same problem. See the JSON object created, my error and my code: JSON object (this is a snippet from console.log):

The Error

0: "Unrecognized token 'fils5poet5': was expecting 'null', 'true', 'false' or NaN↵ at [Source: org.apache.catalina.connector.CoyoteInputStream@7b958ed2; line: 1, column: 21]"

jira = {
   fields : {
      project : {
         key : "CIC"
      },
      summary : "test",
      description: "test",
      issuetype : {
         name : "Sandbox item"
      }
   }
};

console.log(jira); //Also see image at top of this post.

// Submit to Jira api
$.ajax({
   type : "POST",
   dataType : "JSON",
   url : configuration.api_url,
   beforeSend:  function (xhr) {
      xhr.setRequestHeader ("Authorization", "Basic ItsAWrap!(itworks...)"),
      xhr.setRequestHeader ("Content-Type", "application/json");
   },
   data : jira,
   success : (function(response) {
//Do something
}})

回答1:

You could try something like this:

jira = {
    "fields":
    {
        "project":
        {
            "key": "CIC"
        },
        "summary": data["story.name"],
        "description": data["story.notes"],
        "issuetype": { "name": "Sandbox item" }
    }
};

//THIS BADASS FUNCTION!!!
jira = JSON.stringify(jira);

$.ajax({
    type : "POST",
    url : configuration.api_url,
    dataType : "JSON",
    async : false,
    headers: {
        "Authorization": "Basic YeahSomethingInAWrap",
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Cache-Control": "no-cache"
    },
    data : jira,
    success : (function(response) {
        // Hide loader
        l.removeClass("show");

        // Alert Success Message
        alert("Melding succesvol ontvangen, bedankt!");

        // Close dialog
        $(".chrome-extension-dialog a.close").trigger("click");

    })
}); 


回答2:

You need to JSON.stringify your jira variable before you send it.