ugrás a tartalomhoz

3 ajax "loader", amik nem mennek

MSzilveszter · 2008. Okt. 25. (Szo), 08.11
Sziasztok,

készítettem egy olyan tartalom kezelőt, ahol egy és ugyan az a fájl végzi megfelelő konfiguráció mellett az adatok feltöltését, a megfelelő korrektúrázását / jóváhagyását, és utólagos módosítását (függően attól, hogy melyik request_url-től jön a kérés), és azt egészet próbáltam úgy létrehozni, hogy minden tartalom elemét egy-egy külső fájl csinálja meg, amiket szépen egy ajax_loaderrel hívok meg.

Ebből három fajtát csináltam, egy ami egyszerűen betölti a megfelelő divbe a kért fájl tartalmát - egyet, amihez lehet adni két paramétert, amit elküld, és egyet, ahol egy komplett formot dolgoz fel, és az összes elemét átadja a behívandó fájlnak. Valamiért viszont nem hallgatnak rám a dolgok - és még a javascript nem az erősségem, ezért kérném a segítségetek!

function ajax_content_loader(div_id, datatype)
{
var url = 'url/admin/moduls/00_content_editor/ajax/'+datatype+'.php';
var pars = 'ajax=911012';
var myAjax = new Ajax.Updater
(
{success: div_id},
url,
{
method: 'post',
parameters: pars,
onCreate: function(){
$('ajax_in_work').show();
},
onComplete: function(){
$('ajax_in_work').hide();
},
}
);
}

function ajax_content_loader2(div_id, datatype, value)
{
var url = 'url/admin/moduls/00_content_editor/ajax/'+datatype+'.php';
var pars = 'ajax=911012&cnv_value='+value;
var myAjax = new Ajax.Updater
(
{success: div_id},
url,
{
method: 'post',
parameters: pars,
onCreate: function(){
$('ajax_in_work').show();
},
onComplete: function(){
$('ajax_in_work').hide();
},
}
);
}
<!-- a masodik valo arra, hogy az ellenorzo filet, a saver funkciot, a kepkeres harmadik lepeset es a kukat illetve az elonezetet meghivja. -->
<!-- ez alapvetoen annyit tesz, hogy a megadott formot a megadott filenak elpostolja, a cid, ctype, userid tarsasagaban. -->
function ajax_saver(content_id, content_type, user_id, div_id, datatype, form)
{
var url = 'url/admin/moduls/00_content_editor/ajax/'+datatype+'.php';
var pars = 'content_id='+content_id+'&content_type='+content_type+'&user_id='+user_id+'&ajax=911012';
for (i=0;i<document.forms[+'"'+form+'"'+].length;i++)
{
pars = pars + '&' + document.forms[+'"'+form+'"'+].elements[+'"'+i+'"'+].name + '=' + document.forms[+'"'+form+'"'+].elements[+'"'+i+'"'+].value;
}
var myAjax = new Ajax.Updater
(
{success: div_id},
url,
{
method: 'post',
parameters: pars,
onCreate: function(){
$('ajax_in_work').show();
},
onComplete: function(){
$('ajax_in_work').hide();
},
}
);
}

<!-- window opener include -->
</script>
 
1

Hol akadtál el?

Poetro · 2008. Okt. 25. (Szo), 11.13
Hol akadtál el, melyik része nem működik? Elnézést, de ha legközelebb kódot másolsz be ide, akkor megfelelően tabuláld, és használd rá a megfelelő kódkiemelőt, mert ez most igy kb. olvashatatlan. Esetleg jó lenne egy URL, hogy megnézzük, bár én a nem helyes formátumú megjegyzésekre gyanakszom.
2

formázva volt + haladás

MSzilveszter · 2008. Okt. 25. (Szo), 12.10
Szia,

formázva volt, tabulátorokkal, amit szerintem szépen kiírtott, mikor bemászoltam ide.

Amivel még gondom van, minden egyéb megoldódott:

for (i=0;i<document.forms[+'"'+form+'"'+].length;i++)
 {
  pars = pars + '&' + document.forms[+'"'+form+'"'+].elements[+'"'+i+'"'+].name + '=' + document.forms[+'"'+form+'"'+].elements[+'"'+i+'"'+].value;
 }


Alapvetően ennek a pár sornak a lényege, hogy a form nevű változóban leírt form minden mezőjét, ill annak tartalmát hozzáfűzze a pars nevű változóhoz.
A cél, hogy a teljes formot elküldjem az ajax.updeter-ben a célfájlnak, ami ezeket elmenti, dolgozik vele, vagy bármi egyéb.

Kokrétan ez a forma, ami nem működik helyesen:
- document.forms[+'"'+form+'"'+].length
- próbáltam: document.forms[+form+].length
- vagy épp: document.forms.form.length
- és document.forms['"'+form+'"'].length
- de mindhiába.

Ugyan ez az elements[+'"'+i+'"'+].name és az elements[+'"'+i+'"'+].value - nél.
3

a meghívás, ez talán segít

MSzilveszter · 2008. Okt. 25. (Szo), 12.23
javascript:ajax_saver('', '1', '1', 'jobb_div_info', 'content_saver.php', 'content_form')"

ahol a negyedik mondja meg, hogy mi a div neve, az otodik pedig a megnyitando file nevet, az utolso pedig a form neve, amit postolni szeretnék teljes tartalmával.
4

felesleges elemek

cSuwwi · 2008. Okt. 25. (Szo), 13.22
Felesleges a sok idézőjelbe helyzés, ha változóban van az érték, nem kell mindenhol idézőjelekbe tenni. Próbáld így.

var pars = 'content_id='+content_id+'&content_type='+content_type+'&user_id='+user_id+'&ajax=911012';
for (i=0;i<document.forms[form].length;i++)
{
pars = pars + '&' + document.forms[form].elements[i].name + '=' + document.forms[form].elements[i].value;
}
5

megpróbáltam, de

MSzilveszter · 2008. Okt. 25. (Szo), 13.38
Kipróbáltam, az eredménye az lett, hogy a megjelenő forráskódban, amit a böngészőben néztem, ez jelent meg:

pars = pars + '&' + document.forms[form].elements<i>.name + '=' + document.forms[form].elements<i>.value; 
A forróskódba ez került bele:

pars = pars + '&' + document.forms[form].elements[i].name + '=' + document.forms[form].elements[i].value;
És ilyen hibát kapok "ajándékba":

syntax error
[Break on this error] pars = pars + '&' + document.forms[form].elements<i>.name + '=' + document.f...

Firefox2.x alatt néztem meg.
6

debug

cSuwwi · 2008. Okt. 25. (Szo), 16.28
Ezt debugolással lehetne csak hatékonyan megoldani.
Nem tudsz valami tesztoldalt összedobni, ahol rá tudunk nézni?