2017-10-06 3 views
0

J'essaie d'utiliser la méthode $.ajax dans mon exemple de programme. J'ai conçu la page comme ci-dessous:

<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> 

code à l'intérieur PostTarget.aspx.cs est défini ci-dessous.

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(); 
} 

Lors du débogage qui précède, je ne reçois pas des valeurs dans country et title des variables.

Vérifié quelques ressources en ligne, mais le code est presque similaire.

Quelqu'un peut-il s'il vous plaît vérifier et me suggérer si je me trompe n'importe où?

Répondre

1

Vous n'envoyez pas les données correctement. Pour le « x-www-form-urlencoded » tapez la chaîne doit être au format:

country=countryName&title=titleName 

Comme il est, la méthode Request.Form n'est pas donné les données dans le format qu'il attend.