Java-ajax межсайтовая пустая строка ответа - PullRequest
2 голосов
/ 18 марта 2012

Я выполняю межсайтовую транзакцию передачи данных ajax в java (не уверен, правильно ли я назвал это, поэтому, пожалуйста, прости меня за это). Часть кода в файле Java:

BufferedReader input =
            new BufferedReader(new InputStreamReader(connectionsocket.
            getInputStream()));
DataOutputStream output =
            new DataOutputStream(connectionsocket.getOutputStream());
...
output.writeChars("some random text");
output.close();

Также у меня есть файл index.php с некоторыми jQuery:

$(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, что он ожидает закрытия вывода. )

Единственная проблема, независимо от того, что я делаю, я не получаю текст ответа. Это всегда пустая строка: (

Ответы [ 2 ]

2 голосов
/ 18 марта 2012
cross-site ajax to java data transaction

и

index.php

и

Java

Указывает на то, что вы нарушаете политику того же происхождения .Вы должны использовать одну и ту же комбинацию host:port для извлечения веб-страницы (или, по крайней мере, версии javascript кода, которая выполняет AJAX) и отправки запросов AJAX.

Другими словами, если ваш JSисходит от localhost:80, и вы пытаетесь отправить запрос AJAX на localhost:1024, вы нарушаете политики безопасности.

Существуют способы создания междоменного AJAX, такие как jsonp , нотебе действительно это нужно?Я бы предложил обслуживать код jQuery из сервлета, или вообще исключить PHP, или, что еще лучше, переписать все на Scala или Erlang.:)

1 голос
/ 18 марта 2012

в вашем коде, который вы создаете 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/

...