【问题标题】:Ajax post data to server side - Error 500 internal server errorAjax 将数据发布到服务器端 - 错误 500 内部服务器错误
【发布时间】:2014-07-02 23:09:11
【问题描述】:

我有一个使用 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":"Invalid web service call, missing value for parameter: \u0027user\u0027.","StackTrace":" at System.Web.Script.Services .WebServiceMethodData.CallMethod(对象目标,IDictionary`2 参数)\r\n 在 System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(对象目标,IDictionary'2 参数)\r\n 在 System.Web.Script.Services .RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary'2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException" }

【问题讨论】:

  • 尝试制作CreateContstatic。您可能还应该在 global.asax 中捕获并记录应用程序错误以帮助您进行调试。
  • 您确定生成的网址正确吗?使用一些客户端开发工具,例如 firebug 来确认
  • @AshleyJohn 是的,网址没问题,我检查过了...它是“/Code/WebService/EBusinessWS.asmx/CreareCont”,我的网络服务在两个文件夹中...没关系。 ..
  • @JasonP 如何捕获并记录错误?
  • 尝试在您的 ajax 设置中命名您的输入参数。类似“数据:{user: JSON.stringify(model)}

标签: c# jquery asp.net ajax


【解决方案1】:

你的 webmethod 必须是静态的,除非它在 ​​asmx 中

public static void CreareCont(Inregistrare user)

和json数据需要和webmethod的参数同名

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

在你的类属性中包含Public,比如public string Nume { get; set; },它需要在类对象中反序列化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; }
}

【讨论】:

    猜你喜欢
    • 2017-06-27
    • 2017-04-12
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多