» »

Masterpage in jQuery(ajax call)

Masterpage in jQuery(ajax call)

nuclear ::

S pomočjo jquery, želim prenesti podatke v bazo.. Postopam takole:

function update() {
                var list = new Array();
                $("ul").each(function(index, id) {
                    var result = $('#' + id.id).sortable('toArray');
                    var j = 0;
                    for (var i = 0; i < result.length; i++) {
                        list[j++] = $('#' + result[i])[0].value;
                    }
                });

                var jsonText = JSON.stringify({ list: list });

                $.ajax({
                    type: "POST",
                    url: "testiramsort.aspx/SaveData",
                    data: jsonText,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(res) {
                        $("#divResult").text(res.d);
                    }
                });


Problem ni v kodi, problem je v tem, da deluje triggera vse lepo če naredim eno webformo.aspx.
Takoj ko hočem implementirat v projekt z masterpage, pa stvar neče in neče da deluje.

Kako imam razporejeno:

Masterpage:
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script language="javascript" type="text/javascript">
        google.load("jquery", "1.5.1");
        google.load("jqueryui", "1.8.10");
        </script>
    <script type="text/javascript" src="https://github.com/douglascrockford/JSON-js/raw/master/json2.js"></script>
        <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>


testiramsort.aspx(webforma, ki je izpeljana iz masterpage):
<asp:Content ContentPlaceHolderID="head" runat="server">

        <SCRIPT type=text/javascript>
            $(function() {
                $("#sortableslike").sortable();
                $("#sortableslike").disableSelection();
            });
            function update() {
                var list = new Array();
                $("ul").each(function(index, id) {
                    var result = $('#' + id.id).sortable('toArray');
                    var j = 0;
                    for (var i = 0; i < result.length; i++) {
                        list[j++] = $('#' + result[i])[0].value;
                    }
                });

                var jsonText = JSON.stringify({ list: list });

                $.ajax({
                    type: "POST",
                    url: "testiramsort.aspx/SaveData",
                    data: jsonText,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(res) {
                        $("#divResult").text(res.d);
                    }
                });

            }
	</SCRIPT>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

.........


Še code behind za metodo SaveData(jquery preusmeri na testiramsort.aspx/SaveData). Metoda je samo za test, če trigera ali ne:
[WebMethod]
        public static string SaveData(List<string> list)
        {
            string retResult = string.Empty;
            try
            {


                list.ForEach(delegate(string c)
                {
                    retResult = c;
                });


            }
            catch (Exception ex)
            {
                retResult = ex.Message;
            }
            return retResult;
        }



Zdej ne vem več, kaj mirko hoče nič več mi ni jasno kaj je s temi d masterpagei,... Googlam, pa ne povejo nič pametnega, razen to da naredim tako kot sem že.
Je imel kdo podobne težave s temi masterpagei? Kakšen tek naokoli?
Corsair 750D - VI Hero - i5 4670k - Corsair Dominator 32GB - 1080Ti - EVO 500GB
- Sabrent 1TB nVME - Corsair AX860i - Ducky Shine 3 Brown
  • spremenil: nuclear ()

nuclear ::

... Nben?
Corsair 750D - VI Hero - i5 4670k - Corsair Dominator 32GB - 1080Ti - EVO 500GB
- Sabrent 1TB nVME - Corsair AX860i - Ducky Shine 3 Brown

Gandalfar ::

> Takoj ko hočem implementirat v projekt z masterpage, pa stvar neče in neče da deluje.

To pomeni kaj? Ti rece kaksen error?

Iz tvojih snippetov kode ni razvidno kaj klice tale update()

nuclear ::

Ne mece errora, sam nič ne naredi.

Tkole je, na EditGallery.aspx imam gumbek Update, ki kliče metodo "update()" ob kliku.

update pa je:
function update() {
                var list = new Array();
                $("ul").each(function(index, id) {
                    var result = $('#' + id.id).sortable('toArray');
                    var j = 0;
                    for (var i = 0; i < result.length; i++) {
                        list[j++] = $('#' + result[i])[0].value;
                    }
                });
 
                var jsonText = JSON.stringify({ list: list });
 
                $.ajax({
                    type: "POST",
                    url: "testiramsort.aspx/SaveData",
                    data: jsonText,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(res) {
                        $("#divResult").text(res.d);
                    }
                });


Ta metoda potem posta v ta EditGallery.aspx(testiramsort.aspx pač v tem primeru) v WEB METODO id, s pomočjo katerega potem v tej WebMetodi updatamo bazo. Trenutno je web metoda prazna ker testiram če gre sploh noter...

Razumeš zdaj?
Problem je, da če naredim navadn Webform.aspx in ne uporabljam Masterpage.master dela bp.
Corsair 750D - VI Hero - i5 4670k - Corsair Dominator 32GB - 1080Ti - EVO 500GB
- Sabrent 1TB nVME - Corsair AX860i - Ducky Shine 3 Brown

Zgodovina sprememb…

  • spremenil: nuclear ()

Gandalfar ::

Tudi Firebug console nic ne namigne? Poglej ce imas pravilno evente povezane (kar v zgeneriranem html source) - lahko das pa kam na web tudi da sprobamo

luli ::

Imel sem podobno težavo!

Mislim, da IE deluje normalno, težave so samo v FF. Če je temu tako, je težava v stavku $("ul").each(function(index, id), konkretneje v $("ul"). Ta v kolikor se objekti ne nahajajo v masterpage ne vrača ničesar. Ker sem kot sender objekta uporabljal kar sam objekt sam, sem se težave ognil tako, da sem ob klico javascripta poslal tudi parameter sender.

hatchette ::

Namesto aspx-ov uporabi webservice (asmx)

webmethodi dodaj tele atribute
 
   [WebMethod(EnableSession = true)]
   [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
   public string SaveData(List<string> list)
   {
      ...
   }

classu za webservice pa dodaj tale atribut:
  [ScriptService]


Ce ti kaj ne deluje, poglej firebug->network in poglej kaj je dejansko narobe. V primeru da dobivas internal server error 500 (brez dodatnih informacij):
edit web.config: CustomErrors nastavi na Off


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

backbone.js

Oddelek: Programiranje
61101 (742) BigWhale
»

jquery ajax problem

Oddelek: Izdelava spletišč
81391 (1013) miko22
»

Kontakt obrazec

Oddelek: Izdelava spletišč
61937 (1782) betmen
»

[js] json kompresija

Oddelek: Programiranje
223489 (2838) infiniteLoop
»

[c#] shrani text, tabele, slike

Oddelek: Programiranje
251410 (1016) klemen93

Več podobnih tem