Autor Zpráva
Fisak
Profil
Zdravím,

mám takový měnší problémek. Chtěl bych načítat před určité divy ajaxem vygenerovaný div phpčkem. Příklad:
for(var i=0;i<12;i++){
var coordinate_y = eval("1 + " + i);

$.ajax({
type: "POST",
url: "./../php_scripts/test-object.php?get-data=" + coordinate_y,
success: function(resultFromMove){
$(".column-" +  coordinate_y).before(resultFromMove);
}
});
}

a všech 12 objektů se načte v pohodě, bohužel se dají všechny před jeden div např. "column-23" tudíž zde se "i" z toho for nepočítá.

Nevěděl by si někdo s tímto rady?

Moc Děkuji.
lionel messi
Profil
Fisak:

Takisto zdravím,

môžem sa spýtať, aký dôvod ťa vedie k použitiu potenciálne nebezpečného

var coordinate_y = eval("1 + " + i);

namiesto úplne štandardného

var coordinate_y = 1 + i;

bez WTF prvkov?
Fisak
Profil
lionel messi:
protože ten výpočet je malinko složitější... splituji název divu kde mam v názvu zapsané souřadnice divu a dle toho vypočítávám kam se co má vložit. Tamten kód jsem zjednodušil aby bylo více pochopitelné co potřebuji udělat ale zde je tedy celý kód jak ho mám....

if(moveWhere == "left") {

var firstId = $('.row-test div:first-child').attr('class');
var expCoordinate = firstId.split('-');

for(var i=0;i<12;i++){
var coordinate_x = eval(expCoordinate[3] + " + 11");
var coordinate_y = eval(expCoordinate[4] + " + " + i);
$(".column-on-map-" + coordinate_x + "-" + coordinate_y + "-" + expCoordinate[5]).remove();

var request = $.ajax({
type: "POST",
url: "./../php_scripts/test-object.php?get-data-new-texture=common&coordinateMove=" + expCoordinate[3] + "_" + coordinate_y + "_" + expCoordinate[5] + "&moveWhere=" + moveWhere,
});

request.done(function(resultFromMove) {
  $(resultFromMove).insertBefore(".column-on-map-" + expCoordinate[3] + "-" + coordinate_y + "-" + expCoordinate[5]);
});

}
 
}
Fisak
Profil
napadlo mě kód upravit ještě takto:
var request = $.ajax({
type: "POST",
url: "./../php_scripts/test-object.php?get-data=" +  coordinate_y, 
success:function(data)
{
return(data);
}   
});
$(request).insertBefore(".column-" + coordinate_y);


ale to bohužel nefugnuje :-/
Kajman
Profil
Časté potíže, zajímavosti a poučné debaty » Uchování hodnot proměnných v anonymních funkcích — lexikální uzávěry
Radek9
Profil
Fisak:
Pořád nechápu, proč bys měl používat eval. Stačí ty stringy přetypovat na číslo.
var coordinate_x = +expCoordinate[3] + 11;
var coordinate_y = +expCoordinate[4] + i;

Jinak jak píše Kajman. Je to asynchronní, takže ve chvíli, kdy se volá done, už má proměnná coordinate_y hodnotu z posledního průchodu cyklem. Konkrétně by to v tvém případě mohlo vypadat třeba nějak takhle:
// Použije se IIFE pro zachování hodnoty coordinate_y z konkrétní iterace
request.done((function (coordinate_y) {
  return function (resultFromMove) {
    $(resultFromMove).insertBefore(".column-on-map-" + expCoordinate[3] + "-" + coordinate_y + "-" + expCoordinate[5]);
  }
})(coordinate_y));

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0