Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2012, 19:35
Аспирант
Отправить личное сообщение для BorodinKO Посмотреть профиль Найти все сообщения от BorodinKO
 
Регистрация: 31.03.2011
Сообщений: 47

Как отправить http запрос в javaScript
Как отправить http запрос в javaScript? что бы работало на всех браузерах
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2012, 19:41
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

function ajax( url, options ){

	if ( typeof url === "object" ) {
		options = url;
		url = undefined;
	}

	options = options || {};

	options.type = options.type || 'get';
	options.dataType = options.dataType || 'html';
	options.async = options.async === undefined ? true : options.async;

	var data = null;

	if ( options.data ) {
		if ( typeof options.data == "object" ) {
			for( var i in options.data ) {
				data = ( ( data == null ) ? "" : data + "&" ) + ( i + "=" + options.data[ i ] );
			}
		} else {
			data = options.data;
		}
	}

	url = url || options.url;

	url = ( url + "" ).replace( /#.*$/, "" );

	var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"),
		perhapsJSON, textStatus, error = false;

	xhr.onreadystatechange = function() {

		if ( xhr.readyState == 4 ) {

			//xhr.onreadystatechange = null;

			if ( xhr.status >= 200 && xhr.status < 300 || xhr.status === 304 ) {

				perhapsJSON = xhr.responseText;
				textStatus = xhr.statusText || "";

				try {
					if ( options.dataType == 'json' ) {
						if ( window.JSON && JSON.parse ) {
							perhapsJSON = JSON.parse( perhapsJSON );
						} else {
							perhapsJSON = (new Function( "return " + perhapsJSON ))();
						}
					}
				} catch( _ ) {

					error = true;

					if ( options.error ) {
						options.error.call( xhr, xhr, textStatus );
					}
				}

				if ( !error ) {
					if ( options.success ) {
						options.success.call( xhr, perhapsJSON, textStatus, xhr );
					}
				}

				if ( options.complete ) {
					options.complete.call( xhr, xhr, textStatus );
				}

			} else {

				if ( options.error ) {
					options.error.call( xhr, xhr, xhr.statusText || "" );
				}
			}

			xhr = null;
		}
	}

	xhr.open( options.type, url, options.async );

	try {
		xhr.setRequestHeader( "X-Requested-With", "XMLHttpRequest" );
		if ( options.type == "post" ) {
			xhr.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
		}
	} catch( _ ) {}

	xhr.send( data );

	return xhr;
}



xhr = ajax({
	url: href,
	type: "get",
	dataType: "html",
	success: function( data, textStatus, xhr ) {
	},
	complete: function( xhr, textStatus ) {
	},
	error: function( xhr, textStatus ) {
	}
});
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2012, 19:56
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

new Image().src = "http://google.ru";

запрос отправлен...
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2012, 20:04
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

наверное он имеет в виду как с сервера отправить без запроса с клиента.
никак-клиент инициирует всегда соединение
Ответить с цитированием
  #5 (permalink)  
Старый 20.03.2012, 23:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от dmitriymar Посмотреть сообщение
наверное он имеет в виду как с сервера отправить без запроса с клиента.
никак-клиент инициирует всегда соединение
Сообщение от BorodinKO Посмотреть сообщение
Как отправить http запрос в javaScript? что бы работало на всех браузерах
нет, именно через JS.

а тут уже надо спрашивать, нужен ли ему ответ сервера и каким методом отправлять - post или get, и на свой ли домен.

если на свой домен
⌊ можно и XMLHttpRequest, с этим не спорю, см. пост devote.
а если не на свой домен - то тут уже посложнее, и без приготовлений на стороне сервера в некотором количестве случаев не обойтись.
⌊ если надо отправить методом GET
⌊ и ответ сервера не нужен
то можно сделать через картинку (см. мой пост)
⌊ если же результат с сервера нужен
то делать через JSONP или XMLHttpRequest2, насчёт второго - работает не во всех браузерах..
⌊ если же надо через POST
⌊ и результат неважен
можно сделать с помощью IFRAME и формы с атрибутом "target" :
⌊ иначе, если результат используется скриптом
XMLHttpRequest2 (опять таки, не везде), или ответный скрипт во фрейме (примесь с jsonp. тут не получилось, т.к. jsfiddle не выводил тут данные, пришедшие по POST... Вы можете убедиться в том, что там отсылается POST запрос на чужой домен с GET параметром clb и POST параметром msg во вкладке "Сеть" в инструментах разработчика в Вашем браузере.).



Последний раз редактировалось melky, 20.03.2012 в 23:09.
Ответить с цитированием
  #6 (permalink)  
Старый 20.03.2012, 23:23
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от BorodinKO
Как отправить http запрос в javaScript
меня в его вопросе смущает именно "в"
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выводить часть элементов страницы через javascript Victim Events/DOM/Window 9 28.12.2011 22:51
Как узнать подключен ли JavaScript у пользователя? frost18 Элементы интерфейса 1 26.10.2011 17:16
Как на JavaScript подгрузить JavaScript? Pug-dog&Elephant Opera, Safari и др. 2 18.09.2011 15:43
есть переменная javascript надо передать ее в php как это сделать arahmanov Общие вопросы Javascript 5 08.08.2011 16:26
Как (эффективно) изучать JavaScript? JSTalker Общие вопросы Javascript 33 23.12.2010 03:13