0

我正在尝试使用Redmine API使用 Jquery 发送请求,它表示它支持 jsonp

因此,我尝试了不同的方法来使用 Jquery 发出请求,并且我已经搜索了“mime 类型”错误并尝试使用答案来解决,但控制台中的抛出错误始终相同(Google Chrome):

拒绝执行脚本, 'http://redmine_domain_sample/users/current.json?callback=jQuery21309665620597314108_1508906065651&_=1508906065652' 因为它的 MIME 类型('application/json')不可执行,并且启用了严格的 MIME 类型检查。

在 Firefox 中:

语法错误:缺少;声明之前

任命真正返回我的数据的 json。当我点击我可以看到数据:

在此处输入图像描述

这是我的代码:

$("#redmine").click(function() { $.ajax({ type:"get", url:"http://redmine_domain_sample/users/current.json", dataType: "jsonp", contentType: "application/javascript", success: function(response) { alert(response.firstname); exibeProjetosRedmine(); } }); });

此 url 发出身份验证请求,该请求有效,因此当我输入登录数据时,会出现顶部错误。

如果我从扩展客户端发出这个请求,例如,chrome Advanced REST Client,它可以工作,但在我的本地 Laravel 应用程序中没有。

请求返回200 ok,但 Jquery 请求不转到成功函数。当我搜索时,我什至尝试了一些解决方案:

  • 添加一些标题
  • 传入format=json网址

但不工作。我做错了什么?我相信这是一个简单的错误,但我真的不明白。谢谢。

4

2 回答 2

1

谢谢大家。但我只是通过沟通解决了这个问题。Redmine API 接受 jsonp,但默认情况下是禁用的。所以,如果域不允许,我不能用 jsonp 提出请求。没门。

幸运的是,我遇到了我尝试访问的 redmine 域管理员。我要求在管理配置中允许这样做(文档说)allowed jsonp。他做到了,我解决了我的问题。

于 2017-11-27T16:20:48.580 回答
0

它在 Chrome REST 客户端上运行良好的事实已经表明 JavaScript 代码存在问题,而不是 Redmine API 存在问题。

在 Firefox 控制台中收到错误时,您是否使用调试器检查它指向哪一行代码?也许错误出现在该文件中的其他一些 JS 代码中......

GET 请求通常对我来说工作得很好,而不需要放置 dataType 和 contentType。使用错误功能,您可以进一步调试出现的问题。

尝试这样的事情怎么样('.json' 扩展名已经告诉 Redmine 你想要返回什么格式):

$.ajax({
  url: "http://redmine_domain_sample/users/current.json",
  type: "GET",
  error: function(jqXHR, textStatus, errorThrown) {
    if (jqXHR.status == 200) {
      alert(textStatus);
      alert(errorThrown);
    } else {
      alert(textStatus);
      alert(errorThrown);
    }
  },
  success: function(response, textStatus, jqXHR) {
    alert(response.firstname);
    exibeProjetosRedmine();
  }
});
于 2017-11-24T13:24:59.243 回答