powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / XMLHttpRequest в Safari
11 сообщений из 11, страница 1 из 1
XMLHttpRequest в Safari
    #34933289
Dima Yermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток.

Есть небольшая проблемка. XMLHttpRequest не хочет нормально работать в Safari.
Конкретнее: всё что отправляется методом send(content) не приходит на сервер (но сам запрос происходит). В ие и фаерфоксе все работает в чём может быть причина?

Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
var xmlHttp;
         try  {
            xmlHttp =  new  XMLHttpRequest();
        }  catch (e) {
             try  {
                xmlHttp =  new  ActiveXObject("Msxml2.XMLHTTP");
            }
             catch  (e) {
                 try  {
                    xmlHttp =  new  ActiveXObject("Microsoft.XMLHTTP");
                }
                 catch  (e) {
                    alert("Your browser does not support AJAX!");
                     return  false;
                }
            }
        }
 xmlHttp =  this .createTransport();
 xmlHttp.open("POST", "test.jsp");
 xmlHttp..send("test text");


Может не туда, но там где по теме молчат...
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34933477
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
function getXmlHttp(){
  var xmlhttp;
   try  {
    xmlhttp =  new  ActiveXObject("Msxml2.XMLHTTP");
  }  catch  (e) {
     try  {
      xmlhttp =  new  ActiveXObject("Microsoft.XMLHTTP");
    }  catch  (E) {
      xmlhttp = false;
    }
  }
   if  (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp =  new  XMLHttpRequest();
  }
   return  xmlhttp;
}

var req = getXmlHttp()
req.open('GET', 'test.jsp'); 
req.send( null );
 if (req.status ==  200 ) {
  alert(req.responseText);
}
Попробуйте так
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34933551
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var req = getXmlHttp()
req.open('GET', '/xhr/test.html', true); 
req.onreadystatechange = function() {
   if  (req.readyState ==  4 ) {
      if (req.status ==  200 ) {
       alert(req.responseText);
	 }
  }
};
req.send( null );
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34933648
Dima Yermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java Programmer
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var req = getXmlHttp()
req.open('GET', '/xhr/test.html', true); 
req.onreadystatechange = function() {
   if  (req.readyState ==  4 ) {
      if (req.status ==  200 ) {
       alert(req.responseText);
	 }
  }
};
req.send( null );


просто мне как раз и надо req.send("texxt"); а не req.send(null);

req.send(null); - это работает
и req.send("texxt"); работает но я не могу на сервере получить "texxt"
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34934301
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Yermak Java Programmer
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var req = getXmlHttp()
req.open('GET', '/xhr/test.html', true); 
req.onreadystatechange = function() {
   if  (req.readyState ==  4 ) {
      if (req.status ==  200 ) {
       alert(req.responseText);
	 }
  }
};
req.send( null );


просто мне как раз и надо req.send("texxt"); а не req.send(null);

req.send(null); - это работает
и req.send("texxt"); работает но я не могу на сервере получить "texxt"

понял - если хочешь получить на сервере параметр - то надо передавать параметр внутри строки урла
тоесть
'test.jsp?paramName = paramValue'
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34934876
Dima Yermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java Programmer Dima Yermak Java Programmer
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
var req = getXmlHttp()
req.open('GET', '/xhr/test.html', true); 
req.onreadystatechange = function() {
   if  (req.readyState ==  4 ) {
      if (req.status ==  200 ) {
       alert(req.responseText);
	 }
  }
};
req.send( null );


просто мне как раз и надо req.send("texxt"); а не req.send(null);

req.send(null); - это работает
и req.send("texxt"); работает но я не могу на сервере получить "texxt"

понял - если хочешь получить на сервере параметр - то надо передавать параметр внутри строки урла
тоесть
'test.jsp?paramName = paramValue'

это для примера я передал там короткий текст, а на самом деле там должен быть текст длинее чем 512 символов, меня интересует почему req.send("texxt"); не хочет работать на сафари?
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34935223
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, а VB, C++ и Delphi ты тоже запостил?

Если работает, то это просто случайность и, в принципе, неправильная работа. Параметр не состоит из простого значения, это всегда "name-value". Если передавать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
var data = [];
data["action"] = "check_password";
data["email"] = document.getElementById("email").value;
data["password"] = document.getElementById("password").value;
...
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //обязательно!!!
request.send(urlEncodeData(data));
то все работает. Советую использовать именно функцию urlEncodeData - будет меньше проблем.
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34935285
Dima Yermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckИнтересно, а VB, C++ и Delphi ты тоже запостил?

Если работает, то это просто случайность и, в принципе, неправильная работа. Параметр не состоит из простого значения, это всегда "name-value". Если передавать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
var data = [];
data["action"] = "check_password";
data["email"] = document.getElementById("email").value;
data["password"] = document.getElementById("password").value;
...
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //обязательно!!!
request.send(urlEncodeData(data));
то все работает. Советую использовать именно функцию urlEncodeData - будет меньше проблем.

воот где оказывается была зарыта собака request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

Спасибо огромное за ответ.
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34935339
Dima Yermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можете показать функцию urlEncodeData?
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34937022
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно писалось и приношу извинения за ошибочную информацию: данная функция не системная, у меня она в другом js-файле просто была, не обратил внимание:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function urlEncodeData(data)
{
	var query = [];
	 if  (data  instanceof  Object) {
		 for  (var i in data) query.push(encodeURIComponent(i) + "=" + encodeURIComponent(data[i]));
		 return  query.join('&');
	}  else   return  encodeURIComponent(data);
}
...
Рейтинг: 0 / 0
XMLHttpRequest в Safari
    #34939312
Dima Yermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромная благодарность всем за оказанную помощь.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / XMLHttpRequest в Safari
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]