сделал один проект 90% ajax, в последнем проекте тоже пришлось применить, но интереснее было бы посмотреть что-ты там такого наваял ? Какие библиотеки использовал ?
Я где-то сказал что что-то с помощью неё "ваял"? Да и вообще....Лично тебе, Thomas, я бы наверно всё-таки воздержался что-нибудь грить по поводу своих "ваяний" - не хочу ещё неделю пустых споров. Мне интересно что люди делают, если делают, с помощью аякса что-нибудь кроме зависимых менюх и остального стандартного и стоит ли того её применение в принципе. Если хочешь как всегда поспорить и показать как ты крут - создай, плиз, отдельную для этого тему
а погуглить слабо.... или ты думаеш что у нас в городе каждый второй на аяксе уже пишет?? не на том форуме запостил. Без обид =)
постить можно в любом форуме... но вот натура наших людей такова - что в ответ ничего дельного не получишь.
лучше бы по делу отвечали, а не звезды свои во лбу протирали...
Во, вот это я и хотел посмотреть, оч. интересно кстати. В данный момент пишу сугубо закрытый от лишних глаз проект, состоящий из нескольких подсистем. В нём есть различные поиски, документооборот, зависимые менюхи, различные пользовательские доступы и др., но аякс там ещё не применял.
Последний раз редактировалось: Serg_HD (Вс Фев 25, 2007 13:50 pm), всего редактировалось 4 раз(а)
а погуглить слабо.... или ты думаеш что у нас в городе каждый второй на аяксе уже пишет?? не на том форуме запостил. Без обид =)
Перефразирую немного твои слова: "А нафик вообще этот раздел на форуме??? Есть же гугл!". Уж где-где, но тут ну уж очень нечастно возникают новые темы. А если и возникают, то обычно состоящие из " - ты дурак. - Нет ты дурак". Мне интересно, я спрашую, кто хочет ответить отвечает, ни на что большее я не рассчитую.
Ну после увиденного примера, неплохо было бы немного переделать кое-какой из поисков на аяксовский с автодополнением. Да и дозагрузка отдельных частей формы тоже не помешала бы. Этим и можно заняться в своб. время.
Главный движок я сзял оттуза. правда дописал возможность определения callback функции в случае положительного ответа.
авто дополнение делается совсем по-другому.
вот пример использования ajax после переписывания примера
Код:
function save_item(){
add=$$('add_item_name');
tmp=add.value;
ajaxSend("POST","save_state.php?add_item="+lock+"&"+table_name(),"item_name="+add.value,process_add);
}
function process_add(xml){
var response=xml.documentElement.firstChild.nodeValue;
if(response!="error"){
text=$$("section__id_text");
text.innerHTML=tmp;
add=$$("add_item");
area=add.innerHTML;
area=area.replace(/_id/g,response);
add.id="section_"+response+"_area";
add.innerHTML=area;
}else{
section_exists();
}
lock=false;
}
Вот собсвенно переписанный кусок для использования AJAX
Код:
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject();
var handle=function(){}
var debug=false;
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject()
{
// will store the reference to the XMLHttpRequest object
var xmlHttp;
// this should work for all browsers except IE6 and older
try
{
// try to create XMLHttpRequest object
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
// assume IE6 or older
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");
// try every prog id until one works
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
// try to create XMLHttpRequest object
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e) {}
}
}
// return the created object or display an error message
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
// make asynchronous HTTP request using the XMLHttpRequest object
function ajaxSend(method, url, data,callFunction, busyFunction)
{
if(callFunction!=false){
handle=callFunction;
}
// proceed only if the xmlHttp object isn't busy
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
// retrieve the name typed by the user on the form
if(method == "GET"){
if(data == 'null'){
xmlHttp.open("GET", url, true); //ouverture asynchrone
}
else{
xmlHttp.open("GET", url+"?"+data, true);
}
xmlHttp.onreadystatechange = handleServerResponse;
xmlHttp.send(null);
}else if(method == "POST"){
xmlHttp.open("POST", url, true); //ouverture asynchrone
xmlHttp.onreadystatechange = handleServerResponse;
xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlHttp.send(data);
}
}
else{
// if the connection is busy, try again after one second
if(busyFunction){
setTimeout(busyFunction, 1000);
}
}
}
// executed automatically when a message is received from the server
function handleServerResponse(callFunction)
{
// move forward only if the transaction has completed
if (xmlHttp.readyState == 4)
{
// status of 200 indicates the transaction completed successfully
if (xmlHttp.status == 200)
{
// extract the XML retrieved from the server
var xmlResponse=xmlHttp.responseXML;
var xhtmlResponse=xmlHttp.responseText;
if(debug) alert(xmlHttp.responseText);
if(!xmlResponse || !xmlResponse.documentElement)
alert("Invalid XML: \n"+xmlHttp.responseText);
var rootNodeName = xmlResponse.documentElement.nodeName;
if(rootNodeName=="parsererror")
alert("Invalid XML: \n"+xmlHttp.responseText);
xhtmlResponse=xhtmlResponse.replace("<response>",'');
xhtmlResponse=xhtmlResponse.replace("</response>",'');
handle(xmlResponse,xhtmlResponse);
// restart sequence
}
// a HTTP status different than 200 signals an error
else
{
alert("There was a problem accessing the server: " + xmlHttp.statusText+xmlHttp.responseText);
}
}
}
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах