我在端口4444上运行了本地网络服务器。 这个网络服务器提供html页面和其他文件,这很好。但是,当我尝试从服务器获取JSON数据时,我在Javascript控制台中出现错误ERR_EMPTY_RESPONSE超时。如果我将JSON加载为页面,则会正确显示。
我使用Chrome和Firefox测试过。除了超时和Chrome中的ERR_EMPTY_RESPONSE之外,两者都不会显示任何错误。
这是我的JSON数据。
[
{
"x": "286.610989010989",
"y": "43.716483516483514",
"r": "103.5956043956044",
"g": "127.81208791208792",
"b": "143.07472527472527"
},
{
"x": "286.610989010989",
"y": "43.716483516483514",
"r": "103.5956043956044",
"g": "127.81208791208792",
"b": "143.07472527472527"
},
]
这是我的ajax电话。我也试过设置内容类型。
function getData() {
$.ajax({
url: "/data",
type: "json",
timeout: 3000,
success: actData,
complete: getData,
error: function(xhr, status, error) {
console.log(error);
}
});
}
这些是我的HTTP标头。我尝试将内容类型设置为application / json和text / html。
os.print("HTTP/1.0 200" + "\r\n");
os.print("Content-Type: text/plain" + "\r\n");
os.print("Content-Length: " + data.length() + "\r\n");
os.print("\r\n");
os.write(data);
答案 0 :(得分:3)
我发现问题是什么,它比我预期的更愚蠢。我过滤了我的请求只允许POST和GET,因为我认为过滤输入是一个很好的行为。但是,JSON请求实际上使用JSON而不是GET发送标头。所以它被过滤了。因此,我实际上可以在浏览器中看到它,但不能将其作为JSON检索(因为它会发送JSON标头)。
答案 1 :(得分:-3)
你的电话ajax不正确,正确的电话是。
$.ajax({
data:{myparam},
type:get,
datatype:json,
URL:myurl,
success:mifunction,
error:myControl
});