通过REST api和jquery 405方法创建Jira问题是不允许的

时间:2012-12-14 18:14:27

标签: jquery rest jira http-status-code-405

使用以下jquery调用时,我收到一个不允许的http 405方法错误消息。 有人知道如何解决这个问题吗?是由于https?我也尝试了类型为GET和PUT的结果

  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 它一定要是, contentType:'application / json', dataType:'json' 并且405错误消失了。

但现在代码最终出现在错误回调中。我将警报功能更改为警报('错误发生:'+ errmsg.error); 它给了我这个: 错误发生:

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
}

在chrome中我在控制台中收到错误: XMLHttpRequest无法加载https://xxx.jira.com/rest/api/2/issue/。 Access-Control-Allow-Origin不允许原点http://localhost:49592。 有人知道错误是什么吗?

3 个答案:

答案 0 :(得分:2)

我不确定是否可能。你得到的错误是说你不能做跨域XMLHttp请求。您可以在this answer找到更多信息。

解决这个问题的一种方法是使用php(或任何其他语言)创建一个本地API,它将为jQuery提供的ajax调用提供服务。

例如,写一个PHP page,它会通过REST API创建问题,然后使用javascript将所有需要的详细信息发布到此页面。

如果您需要帮助,请告诉我。

修改

使用C#来做这件事,最简单的方法可能就是使用像JiraRestClient.NET这样的东西。

如果您希望自己编写代码,请参阅以下有关connecting to Jira using REST的信息。

答案 1 :(得分:1)

您的内容类型应为'application/json',而不是'application/jsonp'

答案 2 :(得分:0)

我遇到了同样的问题,原因是我使用的是 HTTP 而不是 HTTPS。