javasocket提供的jqueryajax调用不';我没有得到成功的答复 /-----------Java套接字服务器-------- 包com.company.server; 导入java.io.BufferedInputStream; 导入

javasocket提供的jqueryajax调用不';我没有得到成功的答复 /-----------Java套接字服务器-------- 包com.company.server; 导入java.io.BufferedInputStream; 导入,java,javascript,jquery,ajax,http,Java,Javascript,Jquery,Ajax,Http,javasocket提供的jqueryajax调用不';我没有得到成功的答复 /-----------Java套接字服务器-------- 包com.company.server; 导入java.io.BufferedInputStream; 导入java.io.BufferedWriter; 导入java.io.IOException; 导入java.io.OutputStreamWriter; 导入java.io.StringReader; 导入java.net.Socket; 导入

javasocket提供的jqueryajax调用不';我没有得到成功的答复
/-----------Java套接字服务器--------
包com.company.server;
导入java.io.BufferedInputStream;
导入java.io.BufferedWriter;
导入java.io.IOException;
导入java.io.OutputStreamWriter;
导入java.io.StringReader;
导入java.net.Socket;
导入java.util.Properties;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
公共类Worker实现了Runnable{
私有静态记录器Logger=LoggerFactory.getLogger(Worker.class);
专用插座;
公共工作者(最终插座参数){
socket=socketParam;
}
公开募捐{
logger.trace(String.format(“与%s建立连接”),socket.getRemoteSocketAddress());
编排();
}
公共void编排(){
试一试{
最终HttpPacket httpIn=readRequest();
应答(httpIn);
}捕获(IOE异常){
e、 printStackTrace();
}
}
公共HttpPacket readRequest()引发IOException{
最终HttpPacket httpIn=新HttpPacket();
final BufferedInputStream in=new BufferedInputStream(socket.getInputStream());
byte[]streamBuf=新字节[in.available()];
in.read(streamBuf);
最终管柱有效载荷=新管柱(streamBuf,“UTF-8”);
最终字符串[]payloadSplit=payload.split(System.getProperty(“line.separator”);
最终StringBuilder headerBuilder=新StringBuilder();
最终StringBuilder bodyBuilder=新StringBuilder();
布尔bodyField=false;
对于(int i=0;i
  • 意图-当我点击一个按钮(在这个js的html页面中使用class=“test”)时,它应该执行一个ajax调用并返回响应
  • 问题-我没有得到这个ajax调用的响应体。当我在mizilla firefox中使用firebug时,我看到的只是红色的“POST 200 OK-20ms”(忘记了.uri-满足此编辑器)和空正文,以及chrome中的错误消息(调用了ajax错误函数())(没有使用firebug)
  • HttpPacket是应用程序内部的数据结构,用于存储传入数据

  • 错误回调中给出了什么错误原因?javascript控制台中出现了哪些错误?(F12)@Avempace-在第3点中得到回答。@KevinB-仅在chrome中出现错误。警报(“错误:+jqXHR.responseText”);显示“错误:”[Empty]这不是错误原因<代码>错误抛出
    包含错误原因。对不起,以前没有说过。甚至那也是空的。
            //--------- Java Socket Server --------
    
            package com.company.server;
    
            import java.io.BufferedInputStream;
            import java.io.BufferedWriter;
            import java.io.IOException;
            import java.io.OutputStreamWriter;
            import java.io.StringReader;
            import java.net.Socket;
            import java.util.Properties;
    
            import org.slf4j.Logger;
            import org.slf4j.LoggerFactory;
    
            public class Worker implements Runnable {
    
                private static Logger logger = LoggerFactory.getLogger(Worker.class);
    
                private Socket socket;
    
                public Worker(final Socket socketParam) {
                    socket = socketParam;
                }
    
                public void run() {
                    logger.trace(String.format("Connection established with %s.", socket.getRemoteSocketAddress()));
                    orchestrate();
                }
    
                public void orchestrate() {
                    try {
                        final HttpPacket httpIn = readRequest();
                        respond(httpIn);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
    
                public HttpPacket readRequest() throws IOException {
                    final HttpPacket httpIn = new HttpPacket();
                        final BufferedInputStream in = new BufferedInputStream(socket.getInputStream());
                    byte[] streamBuf = new byte[in.available()];
                    in.read(streamBuf);
    
                    final String payload = new String(streamBuf, "UTF-8");
                    final String[] payloadSplit = payload.split(System.getProperty("line.separator"));
    
                    final StringBuilder headerBuilder = new StringBuilder();
                    final StringBuilder bodyBuilder = new StringBuilder();
                    boolean bodyField = false;
                    for (int i = 0; i< payloadSplit.length; i++) {
                        if (i == 0) {
                            String[] firstLine = payloadSplit[0].split("\\s");
                            httpIn.setMethod(firstLine[0]);
                            httpIn.setUrl(firstLine[1]);
                        } else if ("".equals(payloadSplit[i].trim())) {
                            bodyField = true;
                        } else if (bodyField) {
                            bodyBuilder.append(payloadSplit[i]);
                            bodyBuilder.append("\n");
                        } else {
                            headerBuilder.append(payloadSplit[i]);
                            headerBuilder.append("\n");
                        }
                    }
    
                    final Properties props = parsePropertiesString(headerBuilder.toString());
                    httpIn.setHttpHeaders(props);
                    httpIn.setBody(bodyBuilder.toString());
                    logger.trace(String.format("Data received from from %s connection:\n%s", 
                            socket.getRemoteSocketAddress(), payload));
                    return httpIn;
                }
    
                public Properties parsePropertiesString(String s) throws IOException {
                    final Properties p = new Properties();
                    p.load(new StringReader(s));
                    return p;
                }
    
                public void respond(final HttpPacket httpIn) throws IOException {
                    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                    StringBuilder builder = new StringBuilder();
                    builder.append("HTTP/1.1 200 OK" + System.getProperty("line.separator"));
                    builder.append("Content-Type: text/plain" + System.getProperty("line.separator"));
                    builder.append("Content-Length: " + httpIn.getBody().length() 
                    + System.getProperty("line.separator") + System.getProperty("line.separator"));
                    builder.append(httpIn.getBody());
                    builder.append(httpIn.getBody());
    
                    out.write(builder.toString());
                    out.close();
                    socket.close();
                }
            }
    
        //-------------- JQuery Ajax --------------
    
        $(document).ready(function() {
            $(".test").click(function() {
                testMessage();
            });
        });
    
        function testMessage() {
            var url = "http://localhost/";
                $.ajax({
                type : 'POST',
                url : url ,
                contentType: "text/html",
                 success : function(response, textStatus, jqXHR) {
                    alert(response);
                 },
                 error : function(jqXHR, textStatus, errorThrown) {
                    alert("Error getting response.");
                 }
               });
        };