How to pass json string in webmethod C # ASP.NET

I am trying to reinforce a javascript object and then pass the string as a parameter to WebMethod in Code Behind. I can't get it to work, as I get an Internal Server 500 error, and stacktrace says there is no value for the parameter.

Here is the javascript code:

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":" info@avector.com ","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) { } }); 

And here is the web method:

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

Looks like I tried everything I found while searching on Google and here on SO.

I also tried this guide, which many refer to: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

Any ideas?

+6
source share
2 answers

First you need to use

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

instead

var jSon = JSON.stringify(javascriptObject);

Then you, webmethod, would like to

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

Now here aData is your class, something like below

 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;} } 

So your last code looks like

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 for:

  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 } 

Check jQuery Ajax JSON Example in Asp.net

+7
source

Use this format for the ajax post format:

 var jSon = JSON.stringify(javascriptObject); 

Your Json Format will look like this: '{name: "' + name + '"}',

 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); } 

Follow this step to execute the full code: http://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

0
source

Source: https://habr.com/ru/post/985758/


All Articles