Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


jquery funktionsanrop med ajax?

Postades av 2009-09-22 15:00:53 - Niklas Jansson, i forum javascript/dhtml, Tråden har 3 Kommentarer och lästs av 1723 personer

Någon som har en bra idé för detta?

Låt säga att vi i html har en lista med bilar. När man hovrar över texten för en bil körs en funktion, låt säga "GetInfoAboutCar(id)", låt också säga att ta fram id osv. är löst. Denna funktion ska nu fylla i en informationsruta med info om just denna bilen (låt säga årsmodell).

Alltså

ABC-123
CDE-456

när man hovrar över ABC-123 så anropas GetInfoAboutCar(1) (2006), resp. CDE-456/GetInfoAboutCar(2) (1997).
Och årsmodellen (2006 resp 1997) ska hamna i en liten ruta under CDE-456 med id="info".

Om man nu hämtar informationen med jquery-ajax, så blir det ju något i stil med:
$.ajax({
type: "POST",
url: "TestPage.aspx/GetInfo",
data: "{id: 1 }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
...
}
})


Problemet nu är ju att anropet är asynkront, och inte kan returnera något, vilket gör att jag kan hovra över den andra. (och om man har riktig otur, få grejerna i fel ordning). Hur hanterar man detta snyggast?

Är den enda hållbara varianten att hålla reda på "senaste anropet skedde vid tiden x", och strunta i att göra något om man själv anropades tidigare?
typ:


last_call

x = function(my_call){
$.ajax({
type: "POST",
url: "TestPage.aspx/GetInfo",
data: "{id: 1 }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
if(my_call < last_call)
return;
...
}
})
}

onmouseover = {
var tmp = now;
last_call = tmp;
x(tmp);
}

Eller finns det något smartare sätt?


Svara

Sv: jquery funktionsanrop med ajax?

Postades av 2009-09-22 17:27:15 - Jonas Sjöblom

Du kan göra anropet synkront men jag tror inte det löser ditt problem eftersom ajaxrequesten antagligen ligger i en funktion som kallas när man hovrar.

En lösning är att du skapar rutan när man hovrar och tar bort den när man tar bort musen.
<code>
$('.objekt').mouseOver(function() {
var infoRuta = $('<div/>').attr('id', 'infoRuta')
.appendTo('#containerInfoRuta');

$.ajax({
type: "POST",
url: "TestPage.aspx/GetInfo",
data: "{id: 1 }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
infoRuta.html(msg.modell + ' etc.'); // Använd infoRuta-variabeln så är det ingen risk att du får fram fel data.
});
},
function() {
$('#infoRuta').remove();
});
</code>


Svara

Sv:jquery funktionsanrop med ajax?

Postades av 2009-09-22 18:04:44 - Niklas Jansson

Men då får man väl (potentiellt) upp mängder med rutor?! =)


Svara

Sv: jquery funktionsanrop med ajax?

Postades av 2009-09-22 18:15:13 - Jonas Sjöblom

Nej hur så? Det borde inte kunna hända.


Nu funderade jag lite till och kom på att det kan lösas utan mouseout, då är det ingen risk för flera rutor heller.

<code>
$('.objekt').mouseOver(function() {
var infoRuta = $('<div/>').attr('id', 'infoRuta')
.appendTo( $('#containerInfoRuta').html('') );

$.ajax({
type: "POST",
url: "TestPage.aspx/GetInfo",
data: "{id: 1 }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
infoRuta.html(msg.modell + ' etc.'); // Använd infoRuta-variabeln så är det ingen risk att du får fram fel data.
});
});
</code>

Kan hända att du vill ha kvar mouseoutfunktionen om du vill dölja rutan när man tar bort musen från bilden men det är åtmisntone inte längre en nödvändighet.

* Edit några ggr, det här är nog den smdigaste lösningen.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 763
27 959
271 761
402
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies