我写了一些PHP代码,输出一些有效的json,并在我的开发设置中将content-type标头设置为application / json。但是,当我将此脚本部署到嵌入式Web服务器时,除了不能发送内容类型之外,它都能正常工作。无法运行其他Web服务器。
现在,我有以下用于Dynatable的代码。即使我的开发人员和嵌入式Web服务器提供完全相同的文件,唯一的区别是内容类型。它适用于我的开发设置,但不适用于我的嵌入式设置。
我使用以下代码将json文件加载到可动态生成的文件中。
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)
可能更安全。 (毕竟,评估是邪恶的。)