gpt4 book ai didi

javascript - jQuery Ajax 加载表而不是整个页面

转载 作者:行者123 更新时间:2023-11-28 05:50:02 29 4
gpt4 key购买 nike

已修复

我的问题已经解决了。我的问题不是 jQuery 命令,而是使用与第一次加载页面和该 jsp 页面中包含的表格时相同的模板。

解决方案

我的解决方案:创建一个要在新页面加载时调用的新模板,名称为 ControlTable。创建一个仅包含该表的新 jsp 文件。让它加载两个模板。当 jquery 被触发时,通过 Controller -> template -> jSTL core 仅调用新模板

背景

  1. 我有一个表格,用于创建网站用户登录信息。
  2. 当我在“plantNo”中输入文本并从下拉列表中选择生产商时。我希望它在查询 servlet 以获取数据后加载一个表。
  3. 它正在获取数据(我可以通过控制台看到)并检索列表。

问题

问题是表的重新加载。它正在将整个网页重新加载到表中。我究竟做错了什么?我是 jQuery 和 AJAX 的新手。

jQuery 函数

function getProdInfoData(variableIn){

var plantnumber=document.myform.plantNo.value.trim();
alert(plantnumber);

$.post('Admin?page=createUser', {"plant_no": plantnumber },function(data){
$('#pi').html(data).hide().slideDown('slow');
});

}

Create_User.jsp

<script type="text/javascript" src="/javascript/ajax_functions.js"></script>
<script type="text/javascript" src="/javascript/jquery-1.10.2.js"></script>
<script type="text/javascript" src="/javascript/create_web_user.js"></script>
<%@taglib uri="http://java.sun.com/jstl/core" prefix="c"%>


<style type="text/css">
label{display: inline-block; width:120px; font-weight: bold;}
input{width:250px; height: 25px; font-size: 18px; margin-right:25px;}
select{width:250px; height: 25px; font-size: 18px; margin-right:25px;}
#pi tr:nth-child(odd){
background: #dae5f4;
}
#pi tr:nth-child(even){
background: #ccccc;
}

<h2> Create Website User Login</h2>
<!-- &nbsp is a non break line space needed to offset for the asterisk in the required fields-->
<div id="reserve_form"><form name="myform" method="post" action="/Admin?page=create_user_confirm" onsubmit="return validateform(this.form)" >

<div id="User_name"><p><label class="form"><sup style="color:red; font-style:bold, italic;">*</sup> User Name: </label><input type="text" class="textbox" id="uname" name="user_name" />
<label class="form"><sup style="color:red; font-style:bold, italic;;">*</sup> First Name: </label><input type="text" class="textbox" id="fname" name="first_name" /></p></div>

<div id="User_pword"><p><label class="form"><sup style="color:red; font-style:bold, italic;">*</sup> Password: </label><input type="text" class="textbox" id="pword" name="user_pword" />
<label class="form"><sup style="color:red; font-style:bold, italic;">*</sup> Last Name: </label><input type="text" class="textbox" id="lname" name="last_name" /></p></div>

<div id="Plant_no"><p><label class="form"><sup style="color:red; font-style:bold, italic;">*</sup> Plant or Prod #: </label><input type="text" class="textbox" id="plantNo" name="plant_no" />
<label class="form">&nbsp; Farm Name: </label><input type="text" class="textbox" id="farnname" name="farm_name" /></p></div>




<div id="Acct_type"><p><label class="form"><sup style="color:red; font-style:bold, italic;">*</sup> Account Type: </label>
<select name="acct_type" id="acct_type_select" onchange = "ShowHideDiv2(this.value)" style="height: 25px;">
<option value=""> </option>
<option value=5>Producer</option>
<option value=15>Field Man</option>
<option value=2>Admin</option>
</select>

<label class="form">&nbsp; Email Address: </label><input type="text" class="textbox" id="emailaddress" name="email_address" /></p></div>

<div id="cntrl"><p><label class="form"><sup style="color:red; font-style:bold, italic;">*</sup> Control #: </label><input type="text" class="textbox" id="cntrlno" name="cntrl_no" />
</div>

<table id="pi" style="display: block" >
<tr id="header">
<td>Control Number</td>
<td>Producer ID</td>
<td>Producer Name</td>
<td>Producer Name 2</td>
<td>Producer Name 3</td>
<td>Plant</td>
<td>Coop</td>
<td>Federal Order</td>
</tr>
<c:forEach items="${prod_ctl_sel}" var="pt" varStatus="i">
<c:set var="background_color" value="#fff"/>
<c:set var="border_color" value="black"/>
<c:set var="v" value=""/>
<tr class="producer_data" id="<c:out value="${i.count}_row"/>" >
<td style="text-align:center;"><c:out value="${pt.prodCtlNum}"/></div></td>
<td><c:out value="${pt.prodIdNum}"/></td>
<td><c:out value="${pt.prodName1}"/></td>
<td><c:out value="${pt.prodName2}"/></td>
<td><c:out value="${pt.prodName3}"/></td>
<td><c:out value="${pt.prodPlant}"/></td>
<td><c:out value="${pt.prodCoop}"/></td>
<td><c:out value="${pt.prodOrder}"/></td>
</tr>
</c:forEach>

最后servlet/ Controller

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//_LOTS_OF_CODE_IN_BETWEEN
if(request.getParameter("page")!=null && !request.getParameter("page").equals("")){
if(request.getParameter("page").equalsIgnoreCase("createUser")){
/* NEW CODE to create user */

String updateID = info.getUserid();
String prod_number_in = request.getParameter("plant_no");
AdminFunctions af = new AdminFunctions();
ArrayList prod_control_select = new ArrayList();
System.out.println("prond_num_in"+ prod_number_in);
if(prod_number_in != null || prod_number_in != ""){
prod_control_select = af.getProdCtlNum(prod_number_in);
request.setAttribute("prod_ctl_sel",prod_control_select);
}

由于一张图片相当于 1000 个单词,因此这里是一个屏幕截图。

Screen Grab of the webpage after (removed some database info)

最佳答案

此代码可能对您的问题有帮助。

function getProdInfoData(variableIn){

var plantnumber=document.myform.plantNo.value.trim();
alert(plantnumber);

$.post('Admin?page=createUser', {"plant_no": plantnumber },function(data){
$('#pi').html('').append(data).hide().slideDown('slow');
});
}

关于javascript - jQuery Ajax 加载表而不是整个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38151082/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com