JQuery JSON调用返回ERR_EMPTY_RESPONSE超时

时间:2015-09-02 18:21:34

标签: javascript jquery ajax json

我在端口4444上运行了本地网络服务器。 这个网络服务器提供html页面和其他文件,这很好。但是,当我尝试从服务器获取JSON数据时,我在Javascript控制台中出现错误ERR_EMPTY_RESPONSE超时。如果我将JSON加载为页面,则会正确显示。

我使用Chrome和Firefox测试过。除了超时和Chrome中的ERR_EMPTY_RESPONSE之外,两者都不会显示任何错误。

  • 可能是JSON格式错误。
  • 可能存在与域相关的另一个问题(我想,因为我在本地托管)。
  • 或者我的HTTP标头错误。

这是我的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);

2 个答案:

答案 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
});