Content-Type Ajax json 缺失
Content-Type Ajax json missing
我写了一些 php 代码来输出一些有效的 json,并在我的开发设置中将 content-type header 设置为 application/json。但是,当我将此脚本部署到嵌入式网络服务器时,它工作正常,只是它无法发送 content-type。无法 运行 其他网络服务器。
现在我有以下 Dynatable 代码。即使我的开发人员和我的嵌入式网络服务器提供完全相同的文件,唯一的区别是 content-type。它适用于我的开发设置,但不适用于我的嵌入式设置。
我使用以下代码将 json 文件加载到 dynatable。
document.ready(
$.ajax({
url: 'phpApi.php',
success: function(data){
$('#myTable').dynatable({
dataset: {
records: data
}
});
}
}));
有人能解释一下为什么 content-type 对 ajax 如此重要吗?我怎样才能手动告诉我的代码它的 json?
没有内容类型,returned 数据被假定为纯文本。您的代码中没有任何其他信息。
获得 json 的一种方法是在 jquery 代码中指定 return 类型。只需将 dataType: 'json'
添加到 ajax 配置中即可。
或者您可以使用 eval()
将 returned 文本转换为 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毕竟是邪恶的。)
So can someone explain me why the content-type is so important for ajax?
重要的是客户端可以识别服务器返回的内容类型,content-type: application/json 告诉 jQUery 将数据解析为一个东西。如果没有返回内容类型,客户端将假定返回的数据只是纯文本。
How can I tell my code manually its json?
添加 dataType: "json" 参数到 $.ajax()
document.ready(
$.ajax({
url: 'phpApi.php',
dataType: "json",
success: function(data){
$('#myTable').dynatable({
dataset: {
records: data
}
});
}
}));
我写了一些 php 代码来输出一些有效的 json,并在我的开发设置中将 content-type header 设置为 application/json。但是,当我将此脚本部署到嵌入式网络服务器时,它工作正常,只是它无法发送 content-type。无法 运行 其他网络服务器。
现在我有以下 Dynatable 代码。即使我的开发人员和我的嵌入式网络服务器提供完全相同的文件,唯一的区别是 content-type。它适用于我的开发设置,但不适用于我的嵌入式设置。
我使用以下代码将 json 文件加载到 dynatable。
document.ready(
$.ajax({
url: 'phpApi.php',
success: function(data){
$('#myTable').dynatable({
dataset: {
records: data
}
});
}
}));
有人能解释一下为什么 content-type 对 ajax 如此重要吗?我怎样才能手动告诉我的代码它的 json?
没有内容类型,returned 数据被假定为纯文本。您的代码中没有任何其他信息。
获得 json 的一种方法是在 jquery 代码中指定 return 类型。只需将 dataType: 'json'
添加到 ajax 配置中即可。
或者您可以使用 eval()
将 returned 文本转换为 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毕竟是邪恶的。)
So can someone explain me why the content-type is so important for ajax?
重要的是客户端可以识别服务器返回的内容类型,content-type: application/json 告诉 jQUery 将数据解析为一个东西。如果没有返回内容类型,客户端将假定返回的数据只是纯文本。
How can I tell my code manually its json?
添加 dataType: "json" 参数到 $.ajax()
document.ready(
$.ajax({
url: 'phpApi.php',
dataType: "json",
success: function(data){
$('#myTable').dynatable({
dataset: {
records: data
}
});
}
}));