|
Yazan
|
Konu: ajax problemi (Okunma Sayısı 850 defa)
|
fimeral
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 48
|
bu forumdan aldığım bir kod function snifDoc(lyr) { if(document.all) { return document.all[lyr]; } else if(document.getElementById) { return document.getElementById(lyr); } else if(document.layers) { return document.layers[lyr]; } }
function makeRequest() { if(window.XMLHttpRequest) { req = new XMLHttpRequest(); if (req.overrideMimeType) { req.overrideMimeType('text/xml'); } } else if(window.ActiveXObject){ try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} } } else { req = false; } return req; }
function yolla() { str = ""; for(i=0;i<document.forms["namechange"].elements.length;i++) { if(document.forms["namechange"].elements[i].name) { str += document.forms["namechange"].elements[i].name +"="+ document.forms["namechange"].elements[i].value+"&"; } } if(req = makeRequest()) { req.onreadystatechange = getDat; req.open('POST', 'services/moderation/process/name_change.php', true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(str); } } function getDat() { switch(req.readyState) { case 4: if(req.status == 200) { snifDoc('uyari').innerHTML = "Başarıyla Değiştirildi"; } else { snifDoc('uyari').innerHTML = 'İşlem başarısız!'; } break; } // END switch }
şimdi bu kod gayet güzel çalışıyor ama bir sayfada birden çok formum var ve hepside farklı farklı işlevleri var, ve ben şöle bişi yapmak istiyorum, bu url'yi (services/moderation/process/name_change.php), form adını (namechange) ve div adını (uyari) kod içinde sabit tutmak yerine onclick='yolla();' formdan uygun bir şekilde yollayıp yolla(url, formname, div) şekline çevirmek istiyorum, yardımlarınız için şimdiden teşekkürler
|
|
|
|
« Son Düzenleme: 12, 2006, 10:18:00 pm Gönderen: fimeral »
|
Logged
|
|
|
|
|
bndrs
|
Selam, O kullandığın örneği ben eklemiştim "gayet güzel" çalışması normaldir  neyse bu kodu eklediğimde SavasTURK nickiyle site üyesiydim ama bazı üyelerin tavırlarından silmiştim o hesabı tekrar aynı hesabı açtım SavasTURK neyse ismimle devam ederim artık. Şimdi yapmak istediklerine gelince form aksiyonunu parametre ile farklı form isimleri için kullanmaya yyönelik yapacağın düzenleme şu function yolla(frm, url) { str = ""; for(i=0;i<document.forms[frm].elements.length;i++) { if(document.forms[frm].elements[i].name) { str += document.forms[frm].elements[i].name +"="+ document.forms[frm].elements[i].value+"&"; } } if(req = makeRequest()) { req.onreadystatechange = getDat; req.open('POST', url, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(str); } }
Bu üstteki fonksiyonu verdiğim şekle çevirince iki parametre alabilecek ilki "frm" formun ismi ikincisi "url" formun hedefi <form name="form1" onsubmit="return false;"> İsim: <input type="text" name="isim" /> <br /> Soyİsim: <input type="text" name="soyisim" /> <p> <input type="submit" value="Kaydet" onclick="yolla('form1', 'services/moderation/process/name_change.php');" /> </p> </form>
div için bir şey yapmak zor ajax'da bug var bu konuyla ilgili örnek koddaki aşşağıdaki satıra dikkat et "req.onreadystatechange" bir fonksiyon değeri alıyor dikkat ettiysen ama bu değer atanırken fonksiyonda olmuş olsa parantezleri ekledinmi hatayla karşılaşıyorsun bu benden değil ajax'daki bugdan kaynaklanıyor. MozillaDev sitesinde ( AJAX:Getting_Started) bu bug şu sayfada https://bugzilla.mozilla.org/show_bug.cgi?id=238559 belirtiliyor zaten ama kodu karıştır belki başka bir yoldan div için ek birşeyler yapabilirsin. req.onreadystatechange = getDat;
|
|
|
|
« Son Düzenleme: 12, 2006, 11:37:15 pm Gönderen: bndrs »
|
Logged
|
|
|
|
SavasTURK
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 21
|
Selam, Şimdi aklıma geldi aşşağıdaki şekli denersen belki div içinde parametre referans olarak erişebilirsin ama denemedim fonksiyon bu haliyle bug'suz çalışırsa üç parametre alır; ilki "frm" formun ismi ikincisi "url" formun hedefi üçüncüsü div'in ismi function yolla(frm, url, lyr) { str = ""; for(i=0;i<document.forms[frm].elements.length;i++) { if(document.forms[frm].elements[i].name) { str += document.forms[frm].elements[i].name +"="+ document.forms[frm].elements[i].value+"&"; } } if(req = makeRequest()) { req.onreadystatechange = function() { switch(req.readyState) { case 4: if(req.status == 200) { snifDoc(lyr).innerHTML = "Başarıyla Değiştirildi"; } else { snifDoc(lyr).innerHTML = 'İşlem başarısız!'; } break; } // END switch } req.open('POST', url, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(str); } }
|
|
|
|
|
Logged
|
savasturk[et]gmail.com
|
|
|
fimeral
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 48
|
ikisinide çalıştıramadım  son hali şu function snifDoc(lyr) { if(document.all) { return document.all[lyr]; } else if(document.getElementById) { return document.getElementById(lyr); } else if(document.layers) { return document.layers[lyr]; } }
function makeRequest() { if(window.XMLHttpRequest) { req = new XMLHttpRequest(); if (req.overrideMimeType) { req.overrideMimeType('text/xml'); } } else if(window.ActiveXObject){ try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} } } else { req = false; } return req; }
function yolla(frm, url, lyr) { str = ""; for(i=0;i<document.forms[frm].elements.length;i++) { if(document.forms[frm].elements[i].name) { str += document.forms[frm].elements[i].name +"="+ document.forms[frm].elements[i].value+"&"; } } if(req = makeRequest()) { req.onreadystatechange = function () {
switch(req.readyState) { case 4: if(req.status == 200) { snifDoc(lyr).innerHTML = "Başarıyla Değiştirildi"; } else { snifDoc(lyr).innerHTML = 'İşlem başarısız!'; } break; } // END switch }
req.open('POST', url, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(str); } }
ve formuda şu şekilde gönderiyorum <form name='namechange' onsubmit='return false;'> <table width='100%' border='0'> <tr> <td width='54%'> <div align='right'> <input type='text' name='ftpname' value='$row[1]' /> <input type='hidden' name='id' value='$row[0]' /> </div> </td> <td width='46%'><label> <div align='left'> <input type='submit' value='Gönder' onclick='yolla('namechange', 'services/moderation/process/name_change.php', 'uyari');' /> </div> </td> </tr> </table> </form> ama hiçbir işlem yapmıyor
|
|
|
|
« Son Düzenleme: 13, 2006, 07:25:14 am Gönderen: fimeral »
|
Logged
|
|
|
|
|
aziz
|
yukarıda AJAX kodu <script type="text/javascript> içinde çalıştırıp, gerekli "aJAX işlemi yapacağım" fonksiyonlarını çağırıyor musunuz form dan önce ?
|
|
|
|
|
Logged
|
|
|
|
|
 |