2015-04-23 7 views
6

Próbuję stringify obiektu javascript, a następnie przekazać ciąg jako parametr do WebMethod w Code Behind. Nie mogę go uruchomić, ponieważ otrzymuję błąd serwera wewnętrznego równy 500, a komunikat stacktrace mówi, że brakuje wartości parametru.Jak przekazać ciąg json do webmethod C# ASP.NET

Oto kod javascript:

var jSon = JSON.stringify(javascriptObject); 
// "{"Foretagsnamn":"Avector","BGFarg":"000000","TextColor":"fafafa","FooterFarg":"ffffff","FooterColor":"000000","FooterLinkColor":"050505","FeaturedBorderColor":"","HoverFarg":"12ebeb","RutFarg":"0d0d0d","SelectedRutFarg":"","RutColor":"FFFFFF","LankColor":"","DelaMedSig":"1","PersonalSida":"0","StartpageTitle":"","StartpageDescription":"","GoogleMaps":"<iframe width=\"425\" height=\"350\" frameborder=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" src=\"https://maps.google.se/maps?f=q&amp;source=embed&amp;hl=sv&amp;geocode=&amp;q=Avector AB&amp;aq=&amp;sll=56.225986,12.870827&amp;sspn=0.076248,0.154324&amp;ie=UTF8&amp;hq=Avector AB&amp;hnear=&amp;t=m&amp;cid=645910733081021950&amp;iwloc=A&amp;ll=56.224594,12.859229&amp;spn=0,0&amp;output=embed\"></iframe><br /><small><a href=\"https://maps.google.se/maps?f=q&amp;source=embed&amp;hl=sv&amp;geocode=&amp;q=Avector AB&amp;aq=&amp;sll=56.225986,12.870827&amp;sspn=0.076248,0.154324&amp;ie=UTF8&amp;hq=Avector AB&amp;hnear=&amp;t=m&amp;cid=645910733081021950&amp;iwloc=A&amp;ll=56.224594,12.859229&amp;spn=0,0\" style=\"text-align:left\">Visa större karta</a></small>","HittaKartaUrl":"http://www.hitta.se/avector ab/ängelholm/hxTP-4v1HG?vad=Avector AB","EniroKartaUrl":"http://kartor.eniro.se/m/aKkhi","Ikoner":"2","Email":"[email protected]","AdressSida":"1","shadowColor":"ffffff","lineColor":"2b292b","MenuHoverIcon":"Välj bild från server","fontFamily":"Verdana","supportText":"Support Avector","captcha":true,"metaKeywords":"","ShowSupportInFooter":true}" 

$.ajax({ 
    type: "POST", 
    url: "Post/Installningar.aspx/Updatera", 
    data: jSon, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (result) { 

     var resultAsString = result.d; 
     //_this.parent().siblings('.SavedStatus').html(resultAsString); 

     if (resultAsString == "1") { // Gick bra att spara. 
      alert("Uppgifterna är sparade."); 
      document.location = document.location; 
     } 
     else { 
      $('#StatusText').html("Gick inte att spara uppgifterna."); 
     } 


    }, 
    error: function (xhr, ajaxOptions, thrownError) { 

    } 
}); 

A oto WebMethod:

[WebMethod] 
public static string Updatera(string jSon) 
{ 

Czuje jakbym próbowała wszystkiego, co mam znaleziony podczas wyszukiwania przez google i tutaj na WIĘC.

Ja również próbowałem to przewodnik, który wiele patrz: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

jakieś pomysły?

+0

zależności od zawartość 'javascriptObject', może być konieczne serializowanie go w inny sposób. Spróbuj ustawić 'tradycyjne: true' i' dane: javascriptObject' w wywołaniu '$ .ajax'. –

+3

spróbuj zastąpić 'dane: jSon,' z 'dane: {" jSon ": JSon},' – jonamreddy

+0

@jonamreddy Ive zmienił dane: jSonuj do danych: {"jSon": jSon}, wciąż dostaję błąd, teraz "Nieprawidłowy prymitywny json". –

Odpowiedz

7

najpierw trzeba użyć

var jSon = JSON.stringify({obj:javascriptObject});

zamiast

var jSon = JSON.stringify(javascriptObject);

Wtedy WebMethod byłoby jak

[WebMethod] 
public static string Updatera(aData obj) 
{ 
    // logic code 
} 

Teraz tutaj ADATA jest klasa coś jak poniżej

public class aData { 
     public string Foretagsnamn {get;set;} 
     public string BGFarg {get;set;} 
     public string TextColor {get;set;} 
     public string FooterFarg {get;set;} 
     public string Email {get;set;} 
     } 

Więc kod ostateczny wygląd jak

jQuery:

var jSon = JSON.stringify({obj:javascriptObject}); 
      $.ajax({ 
       type: "POST", 
       url: "Post/Installningar.aspx/Updatera", 
       data: jsonData, 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: OnSuccess, 
       error: OnErrorCall 
      }); 

      function OnSuccess(response){ 

      } 

      function OnErrorCall(){ 

      } 

Code Behind:

public class aData { 
    public string Foretagsnamn {get;set;} 
    public string BGFarg {get;set;} 
    public string TextColor {get;set;} 
    public string FooterFarg {get;set;} 
    public string Email {get;set;} 
} 


[WebMethod] 
public static string Updatera(aData obj) 
{ 
    // logic code 
} 

Czy sprawdzić jQuery Ajax JSON Example in Asp.net

+1

Znam jego stary, ale to będzie przydatne dla kogoś jak ja Ogólny używamy ciąg jako rodzaj paramater jak poniżej '[WebMethod] public static ciąg Updatera (** ** ciąg obj) { // kod logiczny } ' Ale musimy użyć parametru jako typ klasy, w powyższym przypadku typu JSON jest typu ** ** ADATA klasy ' [WebMethod]
public static ciąg Updatera (** ADATA ** obj) { // kod logiczny } ' –

0

używać tego formatu do formatu ajax postu:

var jSon = JSON.stringify(javascriptObject); 

Twój formacie JSON będzie tak: '{name: "' + nazwa + '"}',

function ShowCurrentTime() { 
    $.ajax({ 
     type: "POST", 
     url: "Installningar.aspx/Updatera", 
     data: jSon; 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccess, 
     failure: function(response) { 
      alert(response.d); 
     } 
    }); 
} 
function OnSuccess(response) { 
    alert(response.d); 
} 

Obserwuj ten krok za kompletne uruchomić kod: http://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

Powiązane problemy