我试过
var ajaxUrl = 'https://mydomain.atlassian.net/rest/api/2/issue/TICKET-207?fields=status';
jQuery.ajax({
url:ajaxUrl,
dataType: 'jsonp',
type : "GET",
success: function(data){
alert('Sucess data: ' + data);
var resultdata = JSON.stringify(data);
console.log('resultdata22: ' + resultdata);
alert('resultdata: ' + resultdata);
},
error: function(data){
alert('alert error');
}
});
但失败了
拒绝执行来自“https://domain.atlassian.net/rest/api/2/issue/TICKET-207?fields=status&callback=jQuery31104841491505141431_1496758817313&_=1496758817314”的脚本,因为其MIME类型('application / json')不可执行,并且启用了严格的MIME类型检查。
请建议某种方式。 谢谢你
答案 0 :(得分:2)
它不起作用,因为您缺少正确使用jira rest api的身份验证。在进行任何其他查询之前,您可以使用3种方法向jira进行身份验证:基本,基于cookie和OAuth。
您可以在位于此处的jira api文档中找到有关如何正确实现json身份验证的所有详细信息https://developer.atlassian.com/jiradev/jira-apis/jira-rest-apis/jira-rest-api-tutorials/jira-rest-api-example-basic-authentication
在我这边,我使用c#+ json来执行我的查询。 基本身份验证操作需要此标头信息才能使我的所有请求正常工作。
string authToken = "username:password";
request.Headers[HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(authToken));
在您的情况下,它可能看起来有点像这样仅通过https进行测试(安全原因)
这是卷曲示例
curl -D- -u yourusername:yourpassword -X GET -H "Content-Type: application/json" https://mydomain.atlassian.net/rest/api/2/issue/TICKET-207?fields=status
这是您添加标题的javascript
var ajaxUrl = 'https://mydomain.atlassian.net/rest/api/2/issue/TICKET-207?fields=status';
jQuery.ajax({
url:ajaxUrl,
dataType: 'jsonp',
type : "GET",
beforeSend: function (xhr){
xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
success: function(data){
alert('Sucess data: ' + data);
var resultdata = JSON.stringify(data);
console.log('resultdata22: ' + resultdata);
alert('resultdata: ' + resultdata);
},
error: function(data){
alert('alert error');
}
});
},
答案 1 :(得分:2)
谢谢@legrandviking。在你的代码的帮助下,我找到了方法。
function getTicketStatus($ticketID) {
$username = '******';
$password = '******';
$url = "https://domain.atlassian.net/rest/api/2/issue/$ticketID?fields=status";
$curl = curl_init();
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$issue_list = (curl_exec($curl));
////echo '$issue_list===' . $issue_list;
$ticketData = json_decode($issue_list,true);
$ticketStatus = $ticketData['fields']['status']['name'];
///return $ticketData['fields']['status']['name'];
return $ticketStatus;
}
if(isset($_GET['id'])&&!empty($_GET['id'])){
$jiraID = $_GET['id'];
echo getTicketStatus("$jiraID");
}
var ticketID = jQuery(this).text();
jQuery(this).addClass(ticketID);
var ajaxUrl = 'jira.php?id=' + ticketID;
jQuery.ajax({
url:ajaxUrl,
type : "GET",
success: function(data){
alert('data: ' + data);
}});