2

我正在对 java 数据事务进行跨站点 ajax(不确定我是否正确命名,所以请原谅我)。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(),我确实在萤火虫中看到它正在等待关闭输出。

唯一的问题是,无论我做什么,我都没有收到响应文本。它总是一个空字符串:(

4

2 回答 2

2
cross-site ajax to java data transaction

index.php

Java

表示您违反了同源政策。您必须使用相同host:port的组合来检索网页(或至少是执行 AJAX 的代码的 javascript 版本)并发送 AJAX 请求。

换句话说,如果你的 JS 来自localhost:80并且你试图向 发送 AJAX 请求localhost:1024,那么你就违反了安全策略。

有很多方法可以像jsonp那样做跨域 AJAX ,但你真的需要吗?我建议从 servlet 提供 jQuery 代码,或者完全消除 PHP,或者更好的是,用 Scala 或 Erlang 重写所有内容。:)

于 2012-03-18T12:42:52.213 回答
1

在您创建的代码中dataType:"xml" 尝试使用 .text因为在您的响应中我没有看到 xml 格式,您正在使用格式文本创建响应。

            $.ajax({
                type: 'get',
                dataType: 'text',
                url: 'http://localhost:1024/'+$("#command").val(),
                success: function(data) {console.log(data);},
            error: function() { console.log("Error"); }

阅读此选项 ajax 请求http://api.jquery.com/jQuery.ajax/

于 2012-03-18T01:55:20.553 回答