SyntaxError: Неожиданный токен <в JSON в позиции 4 при вызове ajax в asp.net - PullRequest
0 голосов
/ 03 мая 2019

Я связываю данные по событию изменения индекса выпадающего списка, используя вызов ajax, используя веб-форму asp.net. следуя моему Ajax-коду

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);
                    }
                });

когда он выполняется, я получаю 1-ю ошибку, это parsererror, следующая ошибка: «Неожиданный токен <в JSON в позиции 4. </p>

выше мой код 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;
    }

любая помощь будет оценена.

1 Ответ

0 голосов
/ 12 мая 2019

Есть несколько проблемных областей.

foreach (DataRow dtrow in dtManager.Rows)
{
    EduDesc logs = new EduDesc();

    // - extra parentheses.
    // - here you use logs.Edu_desc but in 'success' (below) you use Edu_Description.
    logs.Edu_desc = (dtrow["Edu_Description"].ToString()); 

    logs.eduStream = dtrow["Edu_Stream"].ToString();
    details.Add(logs);
}


success: function (response) {
    // here you're looking for [i], but what is i? you need an integer.
    document.getElementById("ctl00_ContentPlaceHolder2_lblstram").value =
        response.d[i].eduStream
    document.getElementById("ctl00_ContentPlaceHolder2_lbldescs").value = 
        response.d[i].Edu_Description
},

В функции успеха выполните console.log (d), чтобы дважды проверить результаты.НТН.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...