2016-08-26 61 views
-1

这里是我的代码在JavaScript无法从Java服务器的JavaScript XMLHttpRequest的响应接收

<script type="text/javascript"> 
startingListener(); 
function startingListener() { 
    setInterval(function(){ 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "http://localhost:32081/", false); 
    xhr.send();   
     var result = xhr.response; 
     console.log(result); 
    } 
    }, 100); 
} 
</script> 

而且我对Java的

服务器
public static void main (String... args) throws IOException, Exception { 
String clientSentence; 
    ServerSocket welcomeSocket = new ServerSocket(32081); 

    while(true) 
    { 
     Socket connectionSocket = welcomeSocket.accept(); 
     BufferedReader inFromClient = 
      new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 
     PrintWriter outToClient = new PrintWriter(connectionSocket.getOutputStream(), true); 

     clientSentence = inFromClient.readLine(); 
     System.out.println("Received: " + clientSentence); 
      System.out.println("begin"); 
      outToClient.println("fu"); 
      System.out.println("Received: done"); 

    } 
} 

我只想得到答案串JS和工作与它进一步。

所以,当我运行服务器和运行JS,他们连我在IDE的send()从JS

收到

之后,我在Java中开始和完成收到的控制台看到的,但在浏览器控制台我没”没有看到任何刚刚处理的答案和脚本。我做错了什么?

谢谢您的帮助

+0

你没有提醒所有的浏览器?你有没有得到任何浏览器开发工具控制台错误?你确定你想每秒发送10个同步请求吗?是'http:// localhost:32081 /'与网页的起源相同吗?严重的是,浏览器控制台中的任何错误? –

+0

我不明白你的'服务器'是如何创建浏览器需要的Http响应的。 –

+0

@ScaryWombat - 是不是'outToClient.println'会做什么? (我认为,我对Java没有任何线索) - 虽然,重新阅读代码,我明白你的意思......根本没有http,是否有 –

回答

0

你的客户端代码缺少状态变化处理程序,并使用setInterval的100毫秒是在服务器上很重。这是一个更好的JS。你的JAVA问题是另一个问题。 Downvoters:不要评论

function listener() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "http://localhost:32081/", false); 
    xhr.onreadystatechange = function() { 
    if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { 
     console.log(xhr.responseText); 
    } 
    } 
} 

listener(); 

如果你想重复调用监听器,你可以做

function listener() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "http://localhost:32081/", false); 
    xhr.onreadystatechange = function() { 
    if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { 
     if (xhr.responseText != "done") { 
      console.log("server still busy"); 
      setTimeout(listener,1000); // repeat the call 
     } 
     else { 
      console.log("finally done"); 
     } 
    } 
    } 
} 
+0

不是DV,但在服务器代码中的任何Http正在生成?它怎么能有200的状态? –

+0

这是另一个问题。我只处理JS :) – mplungjan

+0

谢谢,但我真的对服务器端感兴趣。原因JS方面不是由我编写的,对于C#代码非常适用,我无法看到。 – warorc

相关问题