webForumDet fria alternativet

AJAX post med webforms?

7 svar · 688 visningar · startad av voigtann1

voigtann1Medlem sedan juni 20019 519 inlägg
#1

Hur få jag ett webform projekt att inte gör en vanlig postning utan gör det via ajax, vanligtvis så gör jag:

$(theForm).submit(function(e) {
	e.preventDefault();
	that = $(this.form);
	var action = that.attr("action");
	var inputData = $(":input", that);

	$.ajax({
		url: action,
		type: that.attr("method"),
		data: inputData.serializeArray(),
		cache: false,
		success: function(data){
		//do nothing at the moment.
		}
	});
});

Vilket gör postningen, men den gör inget i postningen, hoppas någon vet hur webforms fungera så man slipper ladda om sidan för att göra lite uppdateringar.

onkelborgMedlem sedan juli 2003555 inlägg
#2

Hm, om du vill att det ska ske "automatiskt" så får du nog använda någonting annat, t.ex. så finns det i asp.net (eller om det är tillägg, kommer inte riktigt ihop) en uppsättning med "ajaxkontroller". T.ex. partial updates. Man kan "markera" regioner för att de ska kunna uppdateras partiellt.

Annars så rekommenderar jag nog att du titta efter andra sätt att lösa det hela på, t.ex. genom att gå ifrån hela webformstänket?

matlinMedlem sedan okt. 2006224 inlägg
#3

Skickar den inte någon request överhuvudtaget (om du kollar i FireBug eller liknande)?

Om den skickar ett request, men metoden/action inte "triggas", har du satt [WebMethod] attributet på din metod/action som krävs när man kör WebForms? Till skillnad från MVC.

voigtann1Medlem sedan juni 20019 519 inlägg
#4

onkelborg skrev:

Hm, om du vill att det ska ske "automatiskt" så får du nog använda någonting annat, t.ex. så finns det i asp.net (eller om det är tillägg, kommer inte riktigt ihop) en uppsättning med "ajaxkontroller". T.ex. partial updates. Man kan "markera" regioner för att de ska kunna uppdateras partiellt.

Annars så rekommenderar jag nog att du titta efter andra sätt att lösa det hela på, t.ex. genom att gå ifrån hela webformstänket?

Du menar AJAX.NET tror jag.

Nej, jag kan inte lösa det med MVC, då det jag är fast med är webforms.

matlin skrev:

Skickar den inte någon request överhuvudtaget (om du kollar i FireBug eller liknande)?

Om den skickar ett request, men metoden/action inte "triggas", har du satt [WebMethod] attributet på din metod/action som krävs när man kör WebForms? Till skillnad från MVC.

Ja, AJAX:en körs och jag få en respons men inget händer, försöker triggar alla funktioner som asp.net webforms skapar, utan några direkta resultat. Var ändra jag [WebMethod]?

matlinMedlem sedan okt. 2006224 inlägg
#5

voigtann1 skrev:

Ja, AJAX:en körs och jag få en respons men inget händer, försöker triggar alla funktioner som asp.net webforms skapar, utan några direkta resultat. Var ändra jag [WebMethod]?

Okej, om vi säger att vi har följande jQuery ajax metod:

	$.ajax({
		url: /Home.aspx/GetAvatar,
		type: that.attr("method"),
		data: inputData.serializeArray(),
		cache: false,
		success: function(data){
		//do nothing at the moment.
		}
	});

Enligt URL parametern i ajax metoden så kallar vi på sidan Home.aspx och sedan metoden/action GetAvatar.

[WebMethod]
public Image GetAvatar(string[] someSerializedArray) { //Do something }

Så bör metoden i Home.aspx se ut. Är inte helt 100% på parametrarna dock, men de måste överensstämma med requesten annars kommer metoden inte triggas.

onkelborgMedlem sedan juli 2003555 inlägg
#6

voigtann1: Nja, inte att gå över till MVC, men att lämna webformstänket. Som matlin menar. Du får inte funktionalliteten från webforms längre, du får sköta allt själv istället

matlinMedlem sedan okt. 2006224 inlägg
#7

Det onkelborg menar är de inbyggda kontrollerna i ASP.NET - bl.a. <asp:ScriptManager> och <asp:UpdatePanel> med vilka man bör kunna uppnå samma resultat som det du försöker göra med jQuery, men personligen så brukar jag få sitta ett par timmar extra om jag använder en sådan lösning innan allting funkar perfekt än när man kör jQuery där man kan ha full kontroll på request och responsen.

Fast har du ett projekt där det inte används någon jQuery kanske man vi hålla det enhetligt och bara använda ASP.NET kontroller, men det är en annan diskussion och beror mycket på hur projektet du sitter i ser ut :)

onkelborgMedlem sedan juli 2003555 inlägg
#8

Nu känner jag att jag inte är säker på att vi förstår vad varandra pratar om :)

I mitt första inlägg pratade jag om <asp:updatepanel /> och de grunkorna, men att jag rekommenderade att skippa hela "webformstänket" och istället köra på det du skriver/liknande.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)