神秘的AJAX问题

时间:2010-12-16 07:48:54

标签: jquery json

更新

好的,这不是超时问题。我拿出了PHP脚本的所有昂贵部分,并使其只输出[1,2,3],因此它不会超时。 仍然无法正常工作,所以显然我正在做一些真正的脑力待遇。

整件事:

sparql_url = "http://royiv.dyndns-ip.com/websci/git/clean_payroll_json.php";

function foo(response)
{
    alert("foo called.");
    alert(response);
    hers = response["DOE, JANE"];
    alert(hers);
}

function bar(request, stat, err)
{
    alert("Something messed up.");
    alert(err);
}

$.ajax({
    url: sparql_url,
    dataType: 'json',
    error: bar,
    success: foo,
    timeout: 20 * 1000
});

输出是“foo called”,“null”,然后JS被终止。

在Wirshark中查看转移显示响应已发送。 Firebug在“响应”选项卡中不显示任何内容,但显示内容长度为7。


原始问题:

我对jQuery有一个奇怪的超时问题。 10秒后,某事正在终止请求,但我不确定是什么。当我在Wireshark中观看HTTP请求时,大约10秒钟,Firefox开始向服务器发送RST,关闭连接。以下是我执行请求的方式:

$.ajax({
    url: sparql_url,
    error: bar,
    success: foo,
    timeout: 20 * 1000
});

超时后,foo成功功能正在被调用,不是错误回调。这让我觉得jQuery没有这样做,但我不确定这里。这里发生了什么? (URL很慢,但它实际上只在大约10秒内响应。它正在发回JSON数据。)

2 个答案:

答案 0 :(得分:2)

在你的phpscript中,将“Content-Type”标题设置为application / json而不是text / html。

答案 1 :(得分:0)

您可以使用wireshark检查响应数据吗?如果响应为空,则php脚本有问题。如果javascript调用它,可能会生成一个空的响应(缺少一些像用户代理,语言,编码等的http标题)。

只是一个猜测...