create Jira issue via REST api and jquery 405 method not allowed

我的未来我决定 提交于 2019-12-24 00:54:07

问题


When using the following jquery call I receive a http 405 method not allowed error message. Does anybody know how to solve this? Is it due to the https? I tried it also with type GET and PUT with the same result

  function make_base_auth(user, password) {
        var tok = user + ':' + password;
        var hash = btoa(tok);
        return "Basic " + hash;
    }   
function createJiraIssue() {

        var datos = {
            "fields": {
                "project":
              {
                  "key": "HELP"
             },
                "summary": "Test Ticket",
                "description": "Creating of an issue using project keys and issue type  names using the REST API",
                "issuetype": {
                    "name": "Bug"
                },
                "assignee": { "name": "sim" }
            }
        };

        var parameters = JSON.stringify(datos);
        var req = $.ajax({
            url: 'https://xxx.jira.com/rest/api/2/issue/',
            type: "POST",
            data: parameters,
            contentType: 'application/jsonp',
            dataType: 'jsonp',
            async: false,
            processData: false,
            beforeSend: function (xhr) {
            xhr.setRequestHeader('Authorization', make_base_auth(user, password));
            },
            error: function (errmsg) {
                alert('error ocured:' + errmsg.responseText);
            },
            success: function (text) {
                alert(text);
            },

        });
    }

EDIT It has to be, contentType: 'application/json', dataType: 'json' and the 405 error disapears.

But now the code ends up in the error callback. I changed the alert function in there to alert('error ocured:' + errmsg.error); and it gave me this: error ocured:

function (){
if(!e){
  var c=arguments,g,h,i,j,k;b&&(k=b,b=0);
  for(g=0,h=c.length;
        g<h;g++)i=c[g],j=d.type(i),j==="array"?f.done.apply(f,i):j==="function"&&a.push(i);
        k&&f.resolveWith(k[0],k[1])
 }return this
}

In chrome I get the error in the console: XMLHttpRequest cannot load https://xxx.jira.com/rest/api/2/issue/. Origin http://localhost:49592 is not allowed by Access-Control-Allow-Origin. Does anybody know what the error is?


回答1:


I'm not sure if it's possible. The error you got is saying that you can't do cross domain XMLHttp Request. you can find more information on this answer.

One way to go around it, is to create a local API, using php (or any other language), that will serve the ajax calls made by jQuery.

For example, write a PHP page that will create issues via the REST API, then use the javascript to post to this page all the needed details.

Let me know if you need any help.

EDIT

to do it using C#, The easiest way ill probably be using something like JiraRestClient.NET.

If you prefer to code it yourself, here is some info about connecting to Jira using REST.




回答2:


Your content type should be 'application/json', not 'application/jsonp'.



来源:https://stackoverflow.com/questions/13884132/create-jira-issue-via-rest-api-and-jquery-405-method-not-allowed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!