[英]ASP.NET Server not resending page to client on C# WebMethod
[英]How to pass json string to webmethod c# ASP.NET
我试图对一个 javascript 对象进行字符串化,然后将该字符串作为参数传递给代码隐藏中的 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&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)
{
感觉就像我已经尝试了通过谷歌和这里搜索时找到的所有东西。
我也试过很多人参考的这个指南: 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",
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
}
将这种格式用于 ajax 帖子格式:
var jSon = JSON.stringify(javascriptObject);
你的 Json 格式将是这样的:'{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);
}
按照此步骤完整运行您的代码: http : //www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.