【问题标题】:its MIME type (“application/json”) is not a valid JavaScript MIME type它的 MIME 类型(“application/json”)不是有效的 JavaScript MIME 类型
【发布时间】:2019-05-08 11:28:14
【问题描述】:

我正在尝试通过以下代码调用 API。但我的浏览器是 给出同样的错误,服务器没有响应。

我的 API 运行良好,我通过邮递员进行了测试。 我不知道我哪里错了

我也试过放一些标题内容类型

应用程序/jsonapplication/x-javascript , 应用程序/javascript文本/json

function send(text) {


    $.ajax({
        url: 'http://localhost:5005/conversations/default/respond',
        type: 'POST',
        dataType:'jsonp',
        headers: {
            'Content-Type': 'application/javascript'
        },
        data: //JSON.stringify({
            {
            "q": text
        },//),
        success: function (data, textStatus, xhr) {
            console.log(data);

            if (Object.keys(data).length !== 0) {
                for (i = 0; i < Object.keys(data[0]).length; i++) {
                    if (Object.keys(data[0])[i] == "buttons") { //check if buttons(suggestions) are present.
                        addSuggestion(data[0]["buttons"])
                    }
                }
            }

            setBotResponse(data);

        },
        error: function (xhr, textStatus, errorThrown) {
            console.log('Error in Operation');
            setBotResponse('error');
        }
    });

【问题讨论】:

  • 也许你需要 dataType: 'json' 而不是 dataType: 'jsonp' 和 Content-Type: application/json
  • 你必须使用 JSONP 吗?我宁愿使用普通的 JSON 并使用实际的跨源标头修复跨源问题,而不是使用 JSONP 而不是 JSON。在旧的服务器/操作系统上,我确实必须将“application/json”添加到 MIME 类型列表中才能真正使用 json。因此,如果您打算在旧系统上使用 jsonp 或 json,请确保您的客户端和服务器都知道您的 MIME 类型的含义。
  • JSONP 调用的返回格式不是 JSON,而是 JavaScript。 (JSONP = JSON with padding,而 padding 是指一个 JS 函数包装器,用于将响应 JSON 加载到本地或全局变量中)
  • @sheel 这正是我所说的“使用实际的跨源标头修复跨源问题”的意思。只需在您最喜欢的搜索引擎或 SO 上查找 CORS javascript 并实现它,这样您就可以使用普通的 JSON 并且问题消失了。在我们能够正确配置 CORS 之前,JSONP 是跨源问题的解决方案,但现在它大多已经过时了。
  • @sheel 这可能相当复杂,所以其他教程会更好地解释它。简而言之:在响应调用的服务器上,API,您必须配置响应标头,以便它们返回值为 true 的 Access-Control-Allow-Headers。和Access-Control-Allow-Origin,包含您的客户端发出请求的域的值。您还必须确保 API 实际上允许发出 HEAD 请求。根据服务器的不同,您可能还需要添加 Access-Control-Allow-Credentials

标签: javascript json ajax rasa-nlu


【解决方案1】:

我遇到了同样的问题,为了避免这个错误或CORB 错误,我设置了我的 AJAX 调用:

$.ajax({
    url: 'http://api.test/blablabla', 
    type: 'GET',
    headers: {'Access-Control-Allow-Origin':'*'}, // <-------- set this
    dataType: 'jsonp', // // <-------- use JSONP
    success: function(data){
        console.log(data);
    }
});

阅读this后我选择了这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-25
    • 2011-05-05
    • 1970-01-01
    • 2022-11-29
    • 2013-08-13
    • 2020-06-20
    • 2019-01-12
    相关资源
    最近更新 更多