我正在做一个跨站点ajax到java数据事务(不确定我的命名是否正确,所以请原谅我)。 Java文件中的部分代码:
BufferedReader input =
new BufferedReader(new InputStreamReader(connectionsocket.
getInputStream()));
DataOutputStream output =
new DataOutputStream(connectionsocket.getOutputStream());
...
output.writeChars("some random text");
output.close();
我还有带有一些 jQuery 的 index.php 文件:
$(document).ready(function()
{
$("#send_data").click(function(){
$.ajax({
type: 'get',
dataType: 'text',
url: 'http://localhost:1024/'+$("#command").val(),
success: function(data) {console.log(data);},
error: function() { console.log("Error"); }
})
});
});
命令正确发送并在Java端正确接收。那么从java到ajax的请求也是200 OK。输出也正常工作。 (例如,如果我删除 output.close(),我确实在 firebug 中看到它正在等待输出关闭。)
唯一的问题是,无论我做什么,我都没有收到回复文本。它始终是一个空字符串:(
最佳答案
cross-site ajax to java data transaction
和
index.php
和
Java
暗示您违反了same origin policy 。您必须使用相同的host:port
组合来检索网页(或至少是执行 AJAX 的代码的 javascript 版本)并发送 AJAX 请求。
也就是说,如果你的JS来自localhost:80
并且您正在尝试将 AJAX 请求发送至 localhost:1024
,您违反了安全策略。
有多种方法可以进行跨域 AJAX,例如 jsonp ,但是您真的需要它吗?我建议从 servlet 提供 jQuery 代码,或者完全消除 PHP,或者更好的是,用 Scala 或 Erlang 重写所有内容。 :)
关于Java-ajax跨站空响应字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754847/