当前位置: 首页 > 面试题库 >

如何将json字符串传递给webmethod C#ASP.NET

凌征
2023-03-14
问题内容

我试图对一个javascript对象进行字符串化,然后将该字符串作为参数传递给Code
Behind中的WebMethod。我无法正常工作,因为我收到500的内部服务器错误,并且stacktrace指出参数值丢失。

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

好像我已经尝试了通过google搜索以及在此处找到的所有内容。

我还尝试了很多人参考的本指南:http : //encosia.com/using-jquery-to-direct-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",
    url: "Post/Installningar.aspx/Updatera",
    data: jsonData,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: OnSuccess,
    error: OnErrorCall
});

function OnSuccess(response){
    // Do something
}
function OnErrorCall(){
    // Do something
}

背后的代码:

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
}

在Asp.net中 检查jQuery Ajax JSON示例



 类似资料:
  • 问题内容: 我正在尝试通过使用JSON格式的字符串初始化Javascript变量来加载数据表。如果我声明: 那么我的表将正确加载该行。 我尝试在脚本之前初始化Java字符串,然后将该对象传递给Javascript变量,如下所示: 我的表无法识别这一点,并且在尝试以这种方式传递行时无法加载该行。如何正确地将Java字符串传递给Javascript,以便我的表能够加载数据? 问题答案: 尝试使用引号。

  • 问题内容: 我正在将ajax发布到webmethod上,我可以在客户端(通过Firebug)看到请求的状态为200,但未达到我的webmethod中的停止点(webmethod的第一行)。json参数一切正常,但是通过反序列化json的方式,我不得不将其更改为字符串。 js: aspx: 问题答案: 您在jQuery JSON帖子中缺少内容类型: 请参阅本文。当我遇到类似的问题时,它对我很有帮助:

  • 这个网页让我相信我可以将一个空字符串传递给,以关闭图形的y记号。 但是,当我尝试这样做时,我得到以下错误: 怎么回事?如果这种关闭y型刻度的方法是不正确的,那么正确的方法是什么?

  • 根据名为“MessageType”的头属性,我们希望使用不同的jaxbDataFormat对象来封送至XML。我们可以在路由本身中进行选择,但我们希望使用一个专用服务,该服务接受字符串输入messageType,并返回正确的JAXBDataFormat。 现在的问题是如何将标头属性“MessageType”作为参数传递给服务。我们希望使用如下内容: 但是我似乎无法从标题中获得作为字符串的messa

  • 问题内容: 我正在尝试在环境中传递JSON字符串。 test_host_1是172.31.00.00 test_host_2是172.31.00.00 但是在春季日志中,我在打印的地方得到了JSON解析异常 如图所示,双引号转换为单引号!!! 我尝试转义双引号,但没有运气。 知道为什么会发生,还是可以解决? 问题答案: 关于Ansible模板引擎的事情。 如果字符串看起来像对象(以或开头),则An

  • 我试图将字符串参数传递给JavaScript函数。出于某种原因,它只能获取整数。我在这里只放了字符串的语法,因为我知道这是个问题,因为它与int一起工作。 发送函数内的代码: 最终,我希望用计数器的值调用HTML页面上的以下函数,如上图所示: 正如我提到的,当我发送int时,javascript文件会发出警报,但当我发送字符串时不会做出反应。