【问题标题】:troubleshooting help jquery/ajax/json no http response故障排除帮助 jquery/ajax/json 没有 http 响应
【发布时间】:2012-08-17 15:45:17
【问题描述】:

我有一个网站上传到 apache tomcat。代码如下所示本网站假设从其他服务器检索 json 数据。由于某种原因,另一台服务器没有响应,因为我收到了错误消息“握手未通过”。 Firebug 网络面板显示没有响应头,而且 apache 和其他服务器在同一个域上。您能否提供有关如何解决此问题的反馈或线索? ajax 有什么东西,因为它似乎没有发送。

Java 脚本代码:

$(document).ready( function(){
    var home_add='http://mywebsite.net:3300/gateway';
    $('#handshake').click(function(){
        alert(" sending json data");
        $.ajax({ /* start ajax function to send data */ 
                url:home_add,
                type:'POST',
                datatype:'json',
                contenttype:'text/json',
                error:function(){ alert("handshake didn't go through")}, 
                /* call disconnect function */
                data:{
                    "supportedConnectionTypes": "long-polling",
                    "channel": "/meta/handshake",
                    "version": "1:0"
                },
                success:function(data){
                    $("p").append(data+"<br/>");
                    alert("sucessful handshake");
                }                    
        })   
    })
});

Firebug 时间线显示 DNS 查找、连接和等待,没有发送也没有接收。请求标头如下,但没有响应。

Hostmywebsite.net:3300
User-AgentMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101209 CentOS/3.6-2.el5.centos Firefox/3.6.13 接受text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Languageen-us,en;q=0.5
接受编码gzip、放气
接受字符集ISO-8859-1,utf-8;q=0.7,*;q=0.7
保活115
连接保持活动
来源http://127.0.0.1:8080
访问控制请求我...POST

【问题讨论】:

    标签: json http jquery http-headers firebug


    【解决方案1】:

    您是否对域以外的域进行 ajax 调用(即页面来自 mydomain.com,但 ajax 调用来自 theirdomain.com?)如果是这样,则直接 json 不允许这样做,但是您可以查看jsonp(带填充的json)

    【讨论】:

    • 我注意到的其他事情。我不知道这是否只是来自您的示例,或者这是否是实际代码,但 dataType 和 contentType 在您上面的内容中没有正确大小写。我对 javascript 的最大厌恶之一是它既是解释型的又是区分大小写的。因此浪费了很多时间。
    • 嗨,布赖恩,感谢您的回复,我照您说的做了,但还是一样:(
    • 来自 ajax 的页面是否在标准端口(80 或 443)上提供?是否可以让 ajax 调用转到标准端口?只是想知道使用非标准端口是否存在一些奇怪的问题。另外,你有没有在其他浏览器上试过,它们有效吗?