2017-10-06 89 views
0

我正在嘗試在示例程序中使用$.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變量。

驗證了一些在線資源,但代碼幾乎相似。

任何人都可以檢查並建議我,如果我在任何地方做錯了嗎?

回答

1

您無法正確發送數據。對於「X WWW的窗體-urlencoded」鍵入字符串應該是以下格式:

​​

因爲它不是,該方法的Request.Form不被給定在它期望的格式的數據。