ASP.NET WebService paraméter átadása

ASP.NET WebService paraméter átadása
2012-05-10T09:27:01+02:00
2012-05-22T16:55:14+02:00
2022-11-25T20:10:38+01:00
kingoftailor
Csinálok egy olyan oldalt, ahol a képeket át lehet húzni egyik mappából a másikba.
Az áthúzás megy rendesen, de az ajaxos elmentése mindig elakad.

Hogy lehet átadni paramétert egy WebMethod-nak?
A példakódok, amiket találtam, mind behalnak. (Itt pl azt írja a firebug, hogy a Service.CombineName is not a function).
Szükségem lenne a kép id-jére, hogy az adatbázisban tudjak dolgozni vele.

Ez a kódom most:

BelepettMasterPage.master:
<asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="~/WebService/Service.asmx" /> </Services> </asp:ScriptManager>

drop.js:
$(document).ready( function () { $(".draggable").draggable({ revert: "invalid", cursor: "move", scroll: false, containment: '#tartalom', helper: 'clone', appendTo: 'body' }); $(".droppable").droppable({ accept: ".draggable", /*activeClass: "ui-state-highlight",*/ drop: function (event, ui) { var element = $(ui.draggable).clone(); $(this).append(element); $(ui.draggable).remove(); var id = element.attr("id"); OnSayHelloClick(id); } }); } ); function OnSayHelloClick(id) { Service.DisplayMessage(SayHello); } function SayHello(result) { alert(result); }

WebService.cs:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. [System.Web.Script.Services.ScriptService] public class WebService : System.Web.Services.WebService { [WebMethod] public string DisplayMessage(string param) { return "Welcome to the world of JQuery AJax"; } }

Próbálkoztam a $.ajax -al is, de az meg állandóan 400-as Bad request errort dobált.
Mutasd a teljes hozzászólást!
Helló!

a Service.CombineName is not a function


Az általad linkelt példakód már a harmadik rész a sorozatból, és utal rá, hogy az előző két rész kódját használja fel.

Végigcsináltad a tutorialt az elejéről? Mert úgy tűnik, mintha nem adtál volna hozzá egy szükséges metódust.

Másik dolog: az ASP.NET web service a .NET 4 óta obsolete-nek minősül, érdemes inkább WCF service-t használod (a .NET 4-ben már nincs is template rá).

Itt egy tutorial és példakód, hogyan kell Javascriptből WCF service-t hívnod, ami egy adatbázisba írogat (a példa futtatásához SQL Server Express fel kell, hogy legyen telepítve).

Sajnos vannak benne elgépelések és hibák, ráadásul a tutorial rész nem teljes, de a példakód működik és az alap koncepciót meg lehet belőle érteni.
Mutasd a teljes hozzászólást!

  • WCF-et megnézem, ha hazaértem a melóból.

    $.ajax-os példakódod nincs esetleg, ami jól működik?
    Már csak tanulásnak is.

    Lassan már annyit segítesz, hogy meg kell hívjalak pár sörre.
    Mutasd a teljes hozzászólást!
  • Nem vagyok én semmi rossznak az elrontója.

    Ajax-ot én többnyire Ajax Control Toolkit-tel használok (általános esetben UpdatePanel, de egy halom kész control van hozzá).

    Eddig nem nagyon volt olyan problémám, amit ezzel ne tudtam volna egyszerűen és hatékonyan megoldani.
    Mutasd a teljes hozzászólást!
  • A WCF megoldotta a problémám.
    Azt is sikerült kitalálnom véletlenül, hogy hogyan tudok átadni neki paramétert.
    Íme a kód, hátha egyszer más is így jár:

    drop.js
    $(document).ready( function () { $(".draggable").draggable({ revert: "invalid", scroll: false, containment: '#tartalom', helper: 'clone', appendTo: 'body' }); $(".droppable").droppable({ accept: ".draggable", drop: function (event, ui) { var element = $(ui.draggable).clone(); $(this).append(element); $(ui.draggable).remove(); var id = element.attr("id"); GetValueFromServer(id); } }); } ); function GetValueFromServer(p) { Service.DoWork(p,onSuccess, onFailure); } function onSuccess(result) { window.alert(result); } function onFailure(result) { window.alert(result); }


    Service.cs:
    [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Service { [OperationContract] public int DoWork(string p) { int a=0; Int32.TryParse(p.Substring(4), out a); return a; } }
    Mutasd a teljes hozzászólást!
  • Ezt a drag and drop-ot nem lehet megoldani updatepanel-el?
    A WCF állandóan hibát dob az éles szerveren.
    Persze véletlenül se írja ki, mi a baja.
    Service.svc/jsdebug : An unhandled exception occurred during the execution of the current web request.
    Mutasd a teljes hozzászólást!
  • Ha a teszt szerveren működik, az élesen pedig nem, akkor tök feleslegesnek tűnik átírni: logold le a hibát és javítsd ki!
    Mutasd a teljes hozzászólást!
  • Fogalmam sincs, hogyan tudnám logolni.
    Van egy saját log fájlom és minden try-catch-ben van ami oda ír bele, de semmi hiba nincs a logban.
    Ezzel meg nem megyek semmire: An unhandled exception occurred during the execution of the current web request.

    A program működik fent is, a kód lefut rendesen, csak email-ben küldözgeti az asphostpage ezt a hibaüzenetet a képek áthúzásakor.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd