2012-03-17 4 views
2

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

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
cross-site ajax to java data transaction 

и

index.php 

и

Java 

Подразумевает вы нарушаете same origin policy. Вы должны использовать такую ​​же комбинацию host:port для извлечения веб-страницы (или, по крайней мере, для JavaScript кода AJAX) и отправки запросов AJAX.

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

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

+0

Тогда почему шаг один из Ajax-> Java-передачи успешный (Java-конец получает URL-адрес отправлен), но второй шаг не удается? Я предполагаю, что если я нарушаю ту же политику происхождения, она должна потерпеть неудачу на первом шаге. Вы можете это объяснить? –

+0

На каком этапе блокировка должна зависеть от браузера. Если вы пробовали с достаточно старой версией IE (скажем, 7 или 8), она * должна * работать (но без гарантий). –

+0

Почему вы не просто [test1] (http://www.webdevout.net/test?0K) [test2] (http://pastehtml.com/view/brs1b9um2.html)? Наслаждайтесь подключением этих ссылок. :) –

1

в вашем коде вы создаете dataType:"xml" попробовать использовать с text .because в своем ответе я не вижу формат XML, вы создать ответ с текстом формата.

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

прочитать для запроса опции АЯКС http://api.jquery.com/jQuery.ajax/

+0

Да, да, извините, очень жаль, это было просто я отчаянно пытался что-либо, о чем я мог думать. Я попытался «текст» в течение 99% времени, но глупо мне пишет xml в вопросе :(Очень жаль. Я отредактировал это. –

+0

np ^^, а как насчет вашей проблемы все еще не исправить? – viyancs

+0

Вы пытались установить ответ. setContentType ("text/html");? – viyancs