【问题标题】:ajax is returning authentication failure for json object in asp.net webformsajax 在 asp.net webforms 中返回 json 对象的身份验证失败
【发布时间】:2019-02-10 15:52:06
【问题描述】:

这是从查询中获取数据的 getData 函数 并通过数据阅读器将它们附加到字符串中,然后将字符串返回给ajax:

 public static string GetData(string Word)
{

    string response = "<p>No customer selected</p>";
    string connect = "Data Source=SAFI-PC\\SQLEXPRESS;Initial Catalog=work1;Integrated Security=True";
    string sql = "SELECT word_Id  ,word  ,meaning    ,syn1   ,syn2,syn3 ,syn4 FROM trial WHERE word = N'"+Word+"'";
        //" SELECT  tbl_dic.WordID, tbl_dic.Word, tbl_dic.meaning, tbl_dic.syn1, tbl_dic.syn2, tbl_dic.syn3, tbl_dic.syn4, tbl_Trans.Definition, tbl_Trans.Translation FROM tbl_dic INNER JOIN tbl_Trans ON tbl_dic.WordID = tbl_Trans.WordID  where Word=N'" + Word + "'";

    StringBuilder sb = new StringBuilder();

    using (SqlConnection conn = new SqlConnection(connect))
    {
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            cmd.Parameters.AddWithValue("Word", Word);
            conn.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.HasRows)
            {
                while (rdr.Read())
                {
                    sb.Append("<p>");
                    sb.Append("<strong>" + rdr["meaning"].ToString() + "</strong><br />");
                    sb.Append(rdr["syn1"].ToString() + "<br />");
                    sb.Append(rdr["syn2"].ToString() + "<br />");
                    sb.Append(rdr["syn3"].ToString() + "<br />");
                    sb.Append(rdr["syn4"].ToString() + "<br />");

                    sb.Append("</p>");
                    response = sb.ToString();
                    conn.Close();

                    return response;
                }
           }
            return "<p style='background-color:black;'>sdadasdasda</p>";
        }
    }
}

现在是 ajax/jquery 代码:

   $(document).ready(function () {
    $("#askme").keyup(function () {
        $("#ora").empty();

        $.ajax({

            type: "POST",
            url: "solution1.aspx/GetData",
            data: "{'Word' : '" + $("#askme").val() + "'}",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (res) {
                var json1 = JSON.stringify(res);
                alert("sucess");
                console.log(json1);
                $("#ora").html(json1);
 },

            error: function (xhr, textStatus, err) {
               alert("readyState: " + xhr.readyState);
               alert("responseText: " + xhr.responseText);
               alert("status: " + xhr.status);
               alert("text status: " + textStatus);
               alert("error: " + err);
            }

    });


});

    });

当成功和控制台记录 res 时,返回以下内容:

 {"Message":"Authentication failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}

可能是视觉工作室坏了需要修理吗,因为我知道查询有效并且我已经尝试了 3 种不同的方法来完成任务并且每次我得到同一个对象 注意:我有另一个用 asp.net mvc 编写的项目,ajax 运行良好 请帮忙!!!!

【问题讨论】:

  • 当您尝试访问 solution1.aspx/GetData 时,我假设“身份验证失败”。我会确保你能做到这一点。
  • 您正在从 Visual Studios 运行它并确认您可以使用您的 Windows 凭据访问数据库是否正确?这不是以其他用户身份运行,是您,您确实有访问权限?
  • no ajax 关于 solution1.apsx/getdata 是否成功,否则会报错。
  • 是的,我可以访问数据库,其他 mvc 项目运行良好
  • 我找到了解决方案这让我抓狂。内部 ~/App_Start/RouteConfig.cs 更改: settings.AutoRedirectMode = RedirectMode.Permanent;到:settings.AutoRedirectMode = RedirectMode.Off;

标签: c# jquery asp.net ajax webforms


【解决方案1】:

试试这个

console.log(res.d);

尝试将res 附加为HTML

$("#ora").html($.parseHTML(res.d));

所有成功函数为

 success: function (res) {
                var json1 = $.parseHTML(res.d);
                alert("sucess");
                console.log(res.d));//server method returns the string as You gave So dont stringify the res
                $("#ora").html(json1);
 },

【讨论】:

  • 你好,非常感谢,但我找到了解决方案,我应该在网络配置中更改一些内容,我做到了,它奏效了。
猜你喜欢
  • 2022-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多