【问题标题】:Making ajax calls using $.ajax in ASP.NET Web Forms在 ASP.NET Web 窗体中使用 $.ajax 进行 ajax 调用
【发布时间】:2017-10-06 12:40:46
【问题描述】:

我试图在我的示例程序中使用$.ajax 方法。我设计了如下页面:

<form id="form1" runat="server">
        <div>
            Country:
            <asp:TextBox ID="txtCountry" runat="server"></asp:TextBox>
            Title:
            <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox>
            <asp:Button ID="btnAjax" runat="server" Text="$.ajax()" />
            <div id="container"></div>
        </div>
        <script src="Scripts/jquery-1.10.2.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#btnAjax").click(function (evt) {
                    debugger;
                    var data = {};
                    data.country = $("#txtCountry").val();
                    data.title = $("#txtTitle").val();
                    $.ajax({
                        url: "PostTarget.aspx",
                        type: "POST",
                        data: data,
                        contentType: "x-www-form-urlencoded;charset=UTF-8",
                        dataType: "json",
                        success: SuccessfulAjaxResponse,
                        error: ErroticAjaxResponse
                    });
                    evt.preventDefault();
                });
            });
            function SuccessfulAjaxResponse(results, status, jqXHR) {
                $("#container").empty();
                for (var i = 0; i < results.length; i++) {
                    $("#container").append("<tr>" +
                        "<td>" + results[i].EmployeeID + "</td>" + 
                        "<td>" + results[i].FirstName + "</td>" + 
                        "<td>" + results[i].LastName + "</td>"
                        );
                }
            }

            function ErroticAjaxResponse(jqXHR, status, error) {
                alert("Error: " + status);
            }
        </script>
    </form>

PostTarget.aspx.cs 内的代码定义如下。

protected void Page_Load(object sender, EventArgs e)
{
    var country = Request.Form["country"];
    var title = Request.Form["title"];
    var db = new NORTHWNDEntities();
    var emps = db.Employees
        .Where(x => x.Country.Contains(country) || x.Title.Contains(title))
        .Select(x => new EmployeeSearchResult
    {
        EmployeeID = x.EmployeeID,
        FirstName = x.FirstName,
        LastName = x.LastName
    });
    Response.Clear();
    Response.Write(JsonConvert.SerializeObject(emps));
    Response.Flush();
    Response.End();
}

在调试上述内容时,我没有将值输入到 countrytitle 变量中。

验证了一些在线资源,但代码几乎相似。

如果我在任何地方做错了,任何人都可以检查并建议我吗?

【问题讨论】:

    标签: c# jquery asp.net ajax asp.net-ajax


    【解决方案1】:

    您没有正确发送数据。对于 'x-www-form-urlencoded' 类型,字符串应采用以下格式:

    country=countryName&title=titleName
    

    事实上,Request.Form 方法没有以它期望的格式获得数据。

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 2012-04-15
      • 2011-04-22
      • 2015-12-16
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      相关资源
      最近更新 更多