javascript - 缺少内容类型 Ajax json

标签 javascript jquery ajax json dynatable

我编写了一些输出一些有效 json 的 php 代码,并在我的开发设置中将内容类型 header 设置为 application/json 。但是,当我将此脚本部署到嵌入式网络服务器时,它工作正常,只是它无法发送内容类型。无法运行其他网络服务器。

现在我有以下 Dynatable 代码。即使我的开发人员和嵌入式网络服务器提供完全相同的文件,唯一的区别是内容类型。它适用于我的开发设置,但不适用于我的嵌入式设置。

我使用以下代码将 json 文件加载到 dynatable。

document.ready(
    $.ajax({
        url: 'phpApi.php',
        success: function(data){
            $('#myTable').dynatable({
                dataset: {
                    records: data
                }
            });
        }
    }));

有人可以解释一下为什么内容类型对于 ajax 如此重要吗?我如何手动告诉我的代码它的 json?

最佳答案

如果没有内容类型,则返回的数据被假定为纯文本。您的代码中没有任何内容可以告诉它其他情况。

获取 json 的一种方法是在 jquery 代码中指定返回类型。只需将 dataType: 'json' 添加到 ajax 配置中即可。

或者您可以使用eval()将返回的文本转换为json。

document.ready(
    $.ajax({
        url: 'phpApi.php',
        success: function(data){
            $('#myTable').dynatable({
                dataset: {
                    records: eval(data)
                }
            });
        }
    }));

使用 JSON.stringify(eval(data)) 通过确保其 json 可能会给您带来更好的结果。

正如下面指出的,JSON.parse(data) 可能会更安全。 (Eval 毕竟是邪恶的。)

关于javascript - 缺少内容类型 Ajax json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31305401/

相关文章:

javascript - 如何在redux中使用react-router

javascript - 如何将 php 对象获取到 javascript?

JQuery.AJAX - 我的服务器可以返回大量数据吗?

javascript - 鼠标悬停时淡入非文本元素

javascript - 同步连接到 Node js中的套接字

Javascript _.reduce() 练习

javascript - jQuery:创建一个循环,首先需要一个时间间隔,然后更改为另一个时间间隔

Jquery,循环其他点击而不是第一次点击

javascript - 使用 JavaScript/jQuery 获取 html 表格中一行的选定下拉值

javascript - Ajax检查文件是否存在时设置超时