ajax 购物车 c#,关于C#:Ajax将数据发布到服务器端-错误500内部服务器错误

我有一个与jquery一起获得的文本框列表,我试图通过模型将它们发送到服务器端。

我在服务器端(webmethod)上设置了一个断点,但不会成功...

救命?

这是页面中的代码:

function CreareCont() {

var model = {};

model.Nume = txtNume.val();

model.Prenume = txtPrenume.val();

model.CNPsauCUI = txtCNPsauCUI.val();

model.Strada = txtStrada.val();

model.Numar = txtNumar.val();

model.Etaj = txtEmail.val();

model.Apartament = txtApartament.val();

model.Oras = txtOras.val();

model.SectorSauJudet = txtSectorSauJudet.val();

model.Telefon = txtTelefon.val();

model.Email = txtEmail.val();

model.Parola = txtParola.val();

$.ajax({

type:"POST", url: webservicePageUrl +"/CreareCont",

data: JSON.stringify(model),

contentType:"application/json; charset=utf-8", dataType:"json",

success: OnSuccessCall1, error: OnErrorCall1

});

};

function OnSuccessCall1(response) { alert(response.d); };

function OnErrorCall1(response) { alert(response.status +"" + response.statusText); debugger; };

从控制台可以看到,模型发送似乎还可以,它的值是:

{"Nume":"asd","Prenume":"asd","CNPsauCUI":"asd","Strada":"asd","Numar":"asd","Etaj":"asd","Apartament":"asd","Oras":"asd","SectorSauJudet":"asd","Telefon":"asd","Email":"asd","Parola":"asdasd123"}

这是网络服务代码:

[WebMethod]

public void CreareCont(Inregistrare user)

{

string hash = helper.GetSHA1HashData("123");

}

该模型是C#类:

public class Inregistrare

{

string Nume { get; set; }

string Prenume { get; set; }

string CNPsauCUI { get; set; }

string Strada { get; set; }

string Numar { get; set; }

string Etaj { get; set; }

string Apartament { get; set; }

string Oras { get; set; }

string SectorSauJudet { get; set; }

string Telefon { get; set; }

string Email { get; set; }

string Parola { get; set; }

}

}

使用提琴手后,出现以下错误:{" Message":"无效的Web服务调用,缺少参数值: u0027user u0027。"," StackTrace":"位于System.Web.Script.Services.WebServiceMethodData.CallMethod(Object目标,IDictionary`2参数) r n在System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(对象目标,IDictionary'2参数) r n在System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext上下文,WebServiceMethodData methodData,IDictionary'2 rawParams) r n位于System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext上下文,WebServiceMethodData methodData)"," ExceptionType":" System.InvalidOperationException"}

尝试制作CreateCont static。您可能还应该在global.asax中捕获并记录应用程序错误,以帮助您进行调试。

您确定生成的网址正确吗?使用一些客户端开发工具(例如Firebug)进行确认

@AshleyJohn是的,URL正确,我检查了它的... /" / Code / WebService / EBusinessWS.asmx / CreareCont",我的网络服务位于两个文件夹中……确定...

@JasonP如何捕捉和记录错误?

google.com/search?q=global+asax+application_error

尝试一下stackoverflow.com/questions/10416916/

@VivekParekh我使用WebForms,stiil我试过了,没有变化...

@Andrew看到这篇文章和可能的解决方案可能会帮助您tharakaweb.com/tag/500-internal-server-error

@WilfredoP我也这样做了...

如果不确定发生了什么,请使用Fiddler。 :)

您是否有权访问要打的服务器?您可以在操作方法中设置断点吗?

@VivekParekh用过的提琴手,谢谢你的建议。现在我有一个错误文本(我在帖子中添加了它)

@bsayegh是的,服务器是本地主机。不,断点不会命中...

使您的网络方法静态

@sakir完成,现在我终于有了一个更明确的错误:jsfiddle.net/9BfGq

@sakir确定吗?我的方法在一个asmx文件中...在这里,他们说相反:stackoverflow.com/a/5112996/3227909

尝试在ajax设置中命名输入参数。像"数据:{user:JSON.stringify(model)}之类的东西

对不起,我错过了

var data = JSON.stringify({user:JSON.stringify(model)});试试这个

@bsayegh:Json可以...如果我添加用户:...我生成了错误"" Message":"无效的JSON原语:user。"," StackTrace":" ...."

@sakir,我收到此错误:{"消息":"无法将类型 u0027System.String u0027的对象转换为类型 u0027E_business.Code.Library.Inregistrare u0027"," StackTrace":"

您的网络方法必须为静态方法,除非它在asmx中

public static void CreareCont(Inregistrare user)

和json数据需要使用与webmethod参数相同的名称

data: '{"user":'+ JSON.stringify(model)+ '}'

在像public string Nume { get; set; }这样的类属性中包含Public,需要在类对象中反序列化json

试试这个代码

JS

function CreareCont() {

var model = {};

model.Nume = txtNume.val();

model.Prenume = txtPrenume.val();

model.CNPsauCUI = txtCNPsauCUI.val();

model.Strada = txtStrada.val();

model.Numar = txtNumar.val();

model.Etaj = txtEmail.val();

model.Apartament = txtApartament.val();

model.Oras = txtOras.val();

model.SectorSauJudet = txtSectorSauJudet.val();

model.Telefon = txtTelefon.val();

model.Email = txtEmail.val();

model.Parola = txtParola.val();

$.ajax({

type:"POST", url: webservicePageUrl +"/CreareCont",

data: '{"user":'+ JSON.stringify(model)+ '}',

contentType:"application/json; charset=utf-8", dataType:"json",

success: OnSuccessCall1, error: OnErrorCall1

});

};

CS

[WebMethod]

public static void CreareCont(Inregistrare user)

{

string hash = helper.GetSHA1HashData("123");

}

public class Inregistrare

{

public string Nume { get; set; }

public string Prenume { get; set; }

public string CNPsauCUI { get; set; }

public string Strada { get; set; }

public string Numar { get; set; }

public string Etaj { get; set; }

public string Apartament { get; set; }

public string Oras { get; set; }

public string SectorSauJudet { get; set; }

public string Telefon { get; set; }

public string Email { get; set; }

public string Parola { get; set; }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值