我试图对一个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&source=embed&hl=sv&geocode=&q=Avector AB&aq=&sll=56.225986,12.870827&sspn=0.076248,0.154324&ie=UTF8&hq=Avector AB&hnear=&t=m&cid=645910733081021950&iwloc=A&ll=56.224594,12.859229&spn=0,0&output=embed\"></iframe><br /><small><a href=\"https://maps.google.se/maps?f=q&source=embed&hl=sv&geocode=&q=Avector AB&aq=&sll=56.225986,12.870827&sspn=0.076248,0.154324&ie=UTF8&hq=Avector AB&hnear=&t=m&cid=645910733081021950&iwloc=A&ll=56.224594,12.859229&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
[WebMethod] public static string Updatera(aData obj) { // logic code }
现在这aData是您的课程,如下所示:
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示例