【问题标题】:ajax call return HTML response instead of Json in asp.net after using Newtonsoft as well在使用 Newtonsoft 之后,ajax 调用在 asp.net 中返回 HTML 响应而不是 Json
【发布时间】:2019-09-22 01:24:27
【问题描述】:

我正在使用 ajax 调用在我的 Ajax 代码之后使用 asp.net Web 表单绑定下拉索引更改事件的数据

var e = document.getElementById("<%=ddlEducation.ClientID%>");
                var value = e.options[e.selectedIndex].value;
                var text = e.options[e.selectedIndex].text;
                if (value == "0") {
                    $('#dvRecords').empty();
                    alert("Please Select Education");
                    return false;
                }

                var obj = { "iEduid": value};
                var myJSON = JSON.stringify(obj);
                //Filling Grid View  
                $.ajax({
                    type: 'POST',
                    contentType: "application/json; charset=utf-8",
                    url: 'EditProfile.aspx/BINDEducationDATA',
                    data: myJSON,
                    dataType: 'JSON',
                    success: function (response) {
                        document.getElementById("ctl00_ContentPlaceHolder2_lblstram").value = response.d[i].eduStream
                        document.getElementById("ctl00_ContentPlaceHolder2_lbldescs").value = response.d[i].Edu_Description
                    },
                    error: function (xhr, status, error) {
                        console.log(xhr);
                        alert(status);
                        alert(error);
                    }
                });

以上代码返回 HTML 响应而不是 JSON

我的 C# 代码

 [WebMethod]
    public static List<EduDesc> BINDEducationDATA(string iEduid)
    {
        List<EduDesc> details = new List<EduDesc>();
        DataTable dtManager = new DataTable();

        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString))
        {
            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            cmd = new SqlCommand("Select Edu_Stream,Edu_Description from tbl_education WHERE ID='" + iEduid + "'", con);
            da.SelectCommand = cmd;
            da.Fill(dtManager);
        }

        foreach (DataRow dtrow in dtManager.Rows)
        {
            EduDesc logs = new EduDesc();
            logs.Edu_desc = (dtrow["Edu_Description"].ToString());
            logs.eduStream = dtrow["Edu_Stream"].ToString();
            details.Add(logs);
        }
        return details;
    }

我的班级

public class EduDesc
{
    public string Edu_desc { get; set; }
    public string iEduid { get; set; }
    public string eduStream { get; set; }
}

任何帮助将不胜感激。

【问题讨论】:

标签: c# jquery asp.net json ajax


【解决方案1】:

您应该将[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 添加到您的方法中

[WebMethod]
 [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
 public static List<EduDesc> BINDEducationDATA(string iEduid)
 {
}

【讨论】:

    【解决方案2】:

    包括

    using Newtonsoft.Json;
    

    并使用此更改脚本 WebMethod 属性:

    [WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)]
    

    你的 CS 应该是这样的:

    [WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)]
    public static List<EduDesc> BINDEducationDATA(string iEduid)
    {
        List<EduDesc> details = new List<EduDesc>();
        DataTable dtManager = new DataTable();
    
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString))
        {
            SqlCommand cmd = new SqlCommand();
            SqlDataAdapter da = new SqlDataAdapter();
            cmd = new SqlCommand("Select Edu_Stream,Edu_Description from tbl_education WHERE ID='" + iEduid + "'", con);
            da.SelectCommand = cmd;
            da.Fill(dtManager);
        }
    
        foreach (DataRow dtrow in dtManager.Rows)
        {
            EduDesc logs = new EduDesc();
            logs.Edu_desc = (dtrow["Edu_Description"].ToString());
            logs.eduStream = dtrow["Edu_Stream"].ToString();
            details.Add(logs);
        }
        return JsonConvert.SerializeObject(details);
    }
    

    【讨论】:

    • 上述代码没有成功,我将列表对象转换为字符串
    • 这里是一个将List对象转换成字符串的sn-p:dotnetfiddle.net/QB2fTm
    猜你喜欢
    • 2014-10-24
    • 2014-06-06
    • 2021-10-19
    • 1970-01-01
    • 2022-01-04
    • 2011-03-28
    • 2017-12-27
    • 2019-11-12
    • 2019-01-09
    相关资源
    最近更新 更多