【问题标题】:Need Help Diagnosing This Ajax Request Call需要帮助诊断此 Ajax 请求调用
【发布时间】:2018-06-30 06:52:28
【问题描述】:

需要帮助诊断此 Ajax 请求调用。

过滤后的文本是页面上方输入框的文本框,过滤器是一个布尔值,用于检查用户是否想要搜索任何内容,过滤后的文本是用户想要过滤的内容。

function GetData(torf) {
        var watever = { "withfilters": torf, "filteredtext": $('#SortOrdersBy2').val() };

        $.ajax({
            url: '/WebService.asmx/GetData',
            method: 'post',
            dataType: 'json',
            data: JSON.stringify(watever),
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                var employeeTable = $('#datatable tbody');

                var employees = data;

                for (i = 0; i < employees.length; i++) {
                    employeeTable.append('<tr><td>' + employees[i].CustomerId + '</td><td>' + employees[i].CustomerName + '</td><td>' + employees[i].Engineer + '</td></tr>');
                }
            },
            error: function (err) {
                alert("ERROR");
            }
        });
    }

它转到此 Web 服务代码并在加载时运行它,但仍显示错误功能。

[WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public string GetData(bool withfilters, string filteredtext)
    {
        string connectionString = ConfigurationManager.ConnectionStrings["CustomerDataConnectionString"].ConnectionString;
        List<Data1> Data = new List<Data1>();
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
            SqlCommand query = new SqlCommand
                (withfilters ? "SELECT * FROM MainTable CustomerId LIKE '%" + (filteredtext) + "%' OR CustomerName LIKE '%" + (filteredtext) + "%' OR Engineer LIKE '%" + (filteredtext) + "%')"
                             : "SELECT * FROM MainTable",con);
            SqlDataReader rdr = query.ExecuteReader();

            while (rdr.Read())
            {
                Data1 data = new Data1();
                data.CustomerId = Convert.ToInt32(rdr["CustomerId"]);
                data.CustomerName = rdr["CustomerName"].ToString();
                data.Engineer = rdr["Engineer"].ToString();
                Data.Add(data);
            }

        }
        JavaScriptSerializer js = new JavaScriptSerializer();
        return js.Serialize(Data);
    }

任何帮助将不胜感激,需要更多信息让我知道。

【问题讨论】:

  • 您应该使用错误处理程序的所有三个参数,而不是警告"Error"
  • 还请分享您在研究问题和由此产生的错误方面的尝试。
  • 加载资源失败:404(未找到)
  • @Andreas 谢谢我会进一步调查

标签: javascript c# asp.net ajax


【解决方案1】:

在您的网络服务中,您设置了UseHttpGet=true,这意味着可以使用 Http GET 请求而不是 POST 来执行此方法

 [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
 public string GetData(bool withfilters, string filteredtext)

但是,在 javascript 中,您尝试从客户端使用 POST 执行该方法

 $.ajax({
            url: '/WebService.asmx/GetData',
            method: 'post',
            dataType: 'json',

解决方案:

从 ScriptMethod 属性中移除 HttpGet=true:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetData(bool withfilters, string filteredtext)

【讨论】:

  • public string GetData(string filteredtext) 喜欢吗?
  • 抱歉我傻傻地盯着代码看了几个小时 xD
  • 就像这样:你需要ScriptMethod属性,参数列表保持不变[ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string GetData(bool withfilters, string filteredtext)
  • 在运行 web 服务调试器时,我可以使用过滤器并获取正确的数据,但它不会显示在页面上,下面的代码如下所示
  • Id 姓名 工程师
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多