javascript – 如何将json字符串传递给webmethod c#ASP.NET

我试图将 javascript对象字符串化,然后将字符串作为参数传递给Code Behind中的WebMethod.我无法让它工作,因为我得到500的内部服务器错误,堆栈跟踪说参数缺少值.

这是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,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) {

    }
});

这是网络方法

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

感觉就像我在谷歌和SO搜索时所尝试的一切.

我也尝试过很多参考的指南:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

有任何想法吗?

解决方法

首先你需要使用

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

代替

var jSon = JSON.stringify(javascriptObject);

然后你webmethod会是这样的

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

在这里aData就是你的类,如下所示

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

所以你的最终代码看起来像

jQuery:

var jSon = JSON.stringify({obj:javascriptObject});
            $.ajax({
                type: "POST",data: jsonData,success: OnSuccess,error: OnErrorCall
            });

            function OnSuccess(response){

            }

            function OnErrorCall(){

            }

代码背后:

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 
}

请检查jQuery Ajax JSON Example in Asp.net

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...