簡體   English   中英

$ .ajax無法與ASP.NET一起使用

[英]$.ajax is not working with ASP.NET

我正在嘗試調用$.ajax方法,以根據搜索條件檢索NORTHWND Employees的詳細信息。 但是,由於某些原因, countrytitle變量總是返回null 我不明白我在哪里做錯了。

以下是明確的說明。

下面是AjaxDemoRequestPage.aspx的代碼

<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-3.2.1.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#btnAjax").click(function (evt) {
                    var data = {};
                    data.country = $("#txtCountry").val();
                    data.title = $("#txtTitle").val();
                    debugger;
                    $.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();
                debugger;
                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: " + error);
            }
        </script>
    </form>

以下是PostTarget.aspx.cs頁中的代碼。 在此頁面中,調試時總會得到country ,並且titlenull

public partial class PostTarget : System.Web.UI.Page
{
    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();
    }
}

誰能建議我做錯了什么?

contentType應該是這樣的:

contentType: "application/x-www-form-urlencoded;charset=UTF-8",

我的錯誤是我從未調用$.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()" />-->
            <input type="button" id="btnAjax" value="$.ajax()"/>

            <div id="container"></div>
        </div>
        <script src="Scripts/jquery-3.2.1.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#btnAjax").click(function (evt) {
                    var data = {};
                    data.country =document.getElementById('<%= txtCountry.ClientID %>').value;
                    data.title = document.getElementById('<%= txtTitle.ClientID %>').value;
                    debugger;
                    $.ajax({
                        url: "PostTarget.aspx",
                        type: "POST",
                        data: data,
                        contentType: "x-www-form-urlencoded;charset=UTF-8",
                        dataType: "json",
                        success: SuccessfulAjaxResponse,
                        error: ErroticAjaxResponse
                    });
                    $.ajax(data);
                    evt.preventDefault();
                });
            });
            function SuccessfulAjaxResponse(results, status, jqXHR) {
                $("#container").empty();
                debugger;
                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: " + error);
            }
        </script>
    </form>

ASP.NET生成的ID將與您提供的ID不同。 這就是您獲得空值的原因。

您可以通過javascript來訪問ASP.NET控件。

document.getElementById('<%= txtCountry.ClientID %>').value

而且,您也可以簡單地使用html按鈕而不是ASP.NET按鈕來發出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()" />-->
            <input type="button" id="btnAjax" value="$.ajax()"/>

            <div id="container"></div>
        </div>
        <script src="Scripts/jquery-3.2.1.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#btnAjax").click(function (evt) {
                    var data = {};
                    data.country =document.getElementById('<%= txtCountry.ClientID %>').value;
                    data.title = document.getElementById('<%= txtTitle.ClientID %>').value;
                    debugger;
                    $.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();
                debugger;
                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: " + error);
            }
        </script>
    </form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM