Just nu i M3-nätverket
Gå till innehåll
jan-erik

funktioner i jquery

Rekommendera Poster

jan-erik

Hur skriver man rätteligen nedanstående så att det stämmer me js/jquerys sätt att vara o tänka? jag har en känsla av att saker o ting inte kommer i rätt ordning. Symptomen är att det ibland funkar fint, men ibland tar låg tid och även hänger sig.

 

function boknytt(evid,hid,hnm,txt,avg)
{$(document).ready(function() {
[color="#0000ff"]$.get("../a0/pagang3.php", { evid: evid, hid: hid, hnm: hnm, txt:txt, avg: avg });[/color][color="#ff0000"]var par=evid;jqload2('../a0/pagang1.php?val=',par);[/color]
[color="#006400"]$.get("../a0/crtpg.php");[/color]
	});		
	};

 

Funktionen kallas från samma script som den återvänder till i den röda raden. Alltså ett hopp tillbaka och utskrift av mysqldata som uppdaterats från den blå raden.

 

Anropet ser ut så här (orange):

 

$('#content').load('../a0/pagang1.php', { val: par}) ;

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

Vad är det som du vill göra och vad skall dina anrop göra egentligen?

 

Du gör en funktion och däri stoppar du $(document).ready(function() vilket är helt fel tänk.

$(document).ready(function() betyder självt att ladda understående när sidan är klar.

eftersom du gör en funktion som anropar via ett event så behövs inte den raden

Den gröna anropen fattar jag inte alls, du skickar ju inte med något så vad gör den filen?

 

Förklara lite bättre vad du vill göra så kan vi tillsammans styra upp ditt skript.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
jan-erik

Pagang3 uppdaterar en bokningsfil (mysql) med de parametrar som jag angett.

Information från denna bokningsfil läggs ut på skärmen, kolla på www.jea.se. Där finns 4 fönster till höger med liknande upplägg, det är den översta (Pågång) som är aktuell här.

För att snabba upp skärmuppdat så gör jag ett extract ur bokningsfilen, med rätt urval av poster o fält, rätt sortering och styling, etc. Det är detta som crtpg.php svara för, och input till detta är alltså den fil som ändrats av pagang3.

När någon bokar sig i Pågång uppdateras filen som sagt med hjälp av pagang3.php, en loop som snurrar runt uppdaterar i sin tur de delar av skärmen som ändrats, och en röd markering visar vad som ändrats.

om xvis någon bokar sig så sätter jag timestamps, vilket styr om användaren får en markering eller inte. På motsvarande sätt gör jag med de tre andra fönsterna till höger, och med Forum i vänstermenyn, fast där har jag desutom ett hundskall som varsel. Som jag ännu inte fått att funka, men det är mindre viktigt.

Allting funkar faktiskt i övrigt, men jag har en bestämd känsla av att "oktantalet inte är det rätta", vilket ju du bekräftar! jag har konverterat från prototype/scriptacoulus, vilket kanske är knepigare än vad man tror.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

Förstår fortfarande inte riktigt vad du vill göra, du får försöka förklara mer generellt och en sak i taget.

 

Dock såg jag några saker:

Du har ett onclick-händelser på några länkar:

var val='457'; jqload2('textboxleft1x.php?content=',val);

(du har blandat variablarna med och utan citattecken men det kanske fungerar ändå?

 

Detta kan man enkelt dra skära ner till

jqload2('textboxleft1x.php?content=',457);

 

Man kan säkert göra ytterligare förändringar.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
jan-erik

Jag håller på att göra en beskrivning av hur sidan är tänkt att arbeta, tills dess lite generella frågor:

1) Om jag i ett phpscript "A" anropar en js-funktion J1 , och från denna funktion vill köra script B med parameter P, och få resultatet utlagt i div D: Hur utformar jag denna funktion med jQuery?

 

2) Om jag dessutom i samma funktion vill ha kört script C efter att B är klart med output i div D, hur ser det då ut?

 

Vad innebär egentligen

$(document).ready(function() {

och i vilka sammanhang användes den? jag tycker att i alla beskrivningar om Jquery man hittar så står ett att man ska omsluta sina funktioner med denna funktion.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

Haha det blir fortfarande rätt luddigt :) men jag skall försöka svara.

 

1) Om jag i ett phpscript "A" anropar en js-funktion J1 , och från denna funktion vill köra script B med parameter P, och få resultatet utlagt i div D: Hur utformar jag denna funktion med jQuery?

Script B är det en javascriptfunktion eller en PHP-sida?

 

<!-- script i HEAD-->
<script type="text/javascript">
// initiera javascripthändelserna här sidan laddat klart. Detta för att se till att alla element är laddade så jQuery kan få tillgång till dem. Annars kan det bli script-fel
$(document).ready(function(){
 //om man klickar på elementet med id mylink skall detta göras
 $("#mylink1").click(function(){
 //ladda in innehåll från specad fil till specat innehåll, efter hämtat innehåll utan fel, kör funktionen doThis
   $("#mycontent1").load("mitt-innehall.asp",{var1:"variabel 1",var1:"variabel 2"},doThis);
 });
 //
 doThis=function(){
   $("#mycontent2").load("mitt-innehall2.asp",{var1:"variabel 1",var1:"variabel 2"});
 });
});
</script>

<p><a href="javascript:void();" id="mylink1">Klicka här</a></p>
<div id="mycontent1"></div>
<div id="mycontent2"></div>

 

 

Istället för att anropa en extern funktion kan man bygga in allt i samma

$("#mycontent1").load("mitt-innehall.asp",{var1:"variabel 1",var1:"variabel 2"},function(){
var1="fisk";
var2="bröd";
});

 

Man kan köra flera knapphändelser helt oberoende av varandra

 $("#mylink1").click(function(){
 //ladda in innehåll från specad fil till specat innehåll, efter hämtat innehåll utan fel, kör funktionen doThis
   $("#mycontent1").load("mitt-innehall.asp",{var1:"variabel 1",var1:"variabel 2"},doThis1);
   $("#mycontent2").load("mitt-innehall.asp",{var1:"variabel 1",var1:"variabel 2"},doThis2);
 });

Man behöver inte ha en callback efter en funktion om man inte vill. Se bara till att ta bort anropet och kommatecknet innan också.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
jan-erik

Jag ska sätta mig in i dina tips och prova ut dom i en "rå" sida. Tack för att du lagt ner tid o skrivit tydliga kommentarer.

Annras vet jag inte hur jag ska uttrycka mig för att det inte ska bli luddigt, jag kan inte komma fram till nåt enklare o mera generellt än detta:

 

1) Om jag i ett phpscript "A" anropar en js-funktion J1 , och från denna funktion vill köra script B med parameter P, och få resultatet utlagt i div D: Hur utformar jag denna funktion med jQuery?

 

utgå ifrån att B är php.

 

men lite följdfrågor:

Om anropet i "A" inte är en knapp etc, utan xvis ett intervall (loop) eller triggats av en databashändelse, hur ser då anropet ut? Dvs inget "klick".

Kan du sätta in mina A,J1,B,P,D i dina exempel?

 

vad gäller

$(document).ready(function(){

:

är det ändå så att detta ska vara med i alla funktioner? Med uppgift att invänta att allting är startklart?

Om man då i en funktion kör två script efter varandra, ska man då omge varje "load" med detta, eller gäller detta för en funktion i sin helhet?

 

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

för det första, skriv inte phpscript. skriv istället php-sida.

det är inte php-sidan som anropar en javascriptfunktion utan en händelse (t ex klick på element, eller att sidan laddats klart, eller js som körs direkt utan anrop eller händelse (vilket man kanske skall undvida ))

 

1) det fick du förslag på i förra inlägget.

 

Följdfrågan: en databas kan självt inte exekutera en js-funktion så jag förstår inte när det skall anropas. Förklara bättre vad det är som laddas in från databas och vad som skall anropas.

 

<script type="text/javascript">
$(document).ready(function(){
 hej();
 //alla funktioner och händelser som skall köras efter sidan laddats klart, [b]inte inuti varje funktion[/b], samt initiera binda element till händelser.
 $(".minknapp").click(function(){
   alert('du klickade på mig');
 });
});

//kan också skrivas
$(document).ready(hejdaa);

function hej(){
 alert('hej');
}

hejdaa = function(){
 alert('hej då');
}
</script>

 

Läs mer på jquery.com. Det är rätt tydligt där annars.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
jan-erik

Nåja, nog tycker jag att något som heter xxx.php är ett phpscript och inte en phpsida.

jag tycker dessutom att det är hårklyveri att anmärka på att jag skriver att ett phpscript anropar i stället för en händelse i scriptet.

 

vad gäller anrop från databas:

Ett script sätter en timestamp i en tabell.

Et annat script jämför denna timestamp med en sessionsvariable, och vid ett visst utfall anropas en jsfunktion.

På så vis kan man från en databas anropa en funktion utan aktivering via knapp etc.

Du svarade inte på om det är så ett en funktion ska omslutas av document.ready... eller om det bara är ibland.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Jonas__B

ett php-script ser jag som ett stycke php-kod eller en funktion i php i en php-sida, men i detta avseende att ha konversationen tydlig så att alla förstår (inte bara du själv) föreslår jag att vi inte använder script för att peka mot php.

 

hårklyverier: nej, server-side-språk kan inte självt anropa klient-script. Dock kan man skriva ut ett funktionsanrop som körs av sidan.

Kalla det vad du vill, men behåll det tydligt för andra, menar jag bara på.

 

document.ready är en händelse som körs efter sidan laddats klart.

det skrev jag kommenterat i kodstycket.

NEJ. funktioner skall inte inneslutas av det.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...