Java Ajax任务不一致
意图:我正在尝试写一些东西,用户将单击页面上的按钮,并查看SQL表在后台更新时发生的情况,因为该过程需要很长时间 问题:由于某种原因,当我第一次单击按钮时,它会不断向我的java servlet发送空值。如果我重新加载页面并再次单击按钮,那么它将正常工作。但我不能期望我的用户每次访问页面时都重新加载页面 非常感谢您的帮助 Jquery v1.11.1(因为这里的一些机器仍然运行IE8) Java服务器(Glassfish 3.1) IDE日食开普勒 page.jspJava Ajax任务不一致,java,jquery,ajax,jsp,Java,Jquery,Ajax,Jsp,意图:我正在尝试写一些东西,用户将单击页面上的按钮,并查看SQL表在后台更新时发生的情况,因为该过程需要很长时间 问题:由于某种原因,当我第一次单击按钮时,它会不断向我的java servlet发送空值。如果我重新加载页面并再次单击按钮,那么它将正常工作。但我不能期望我的用户每次访问页面时都重新加载页面 非常感谢您的帮助 Jquery v1.11.1(因为这里的一些机器仍然运行IE8) Java服务器(Glassfish 3.1) IDE日食开普勒 page.jsp <script typ
<script type="text/javascript" src="JavaScript/jquery.js"></script>
<script>
$.ajaxSetup({
cache : false
});
function updateAttdData(processNum, tablePrefix, procName) {
$.ajax({
url : 'TestProcRefresh',
type : 'POST',
async: true,
data : 'tableprefix=' + tablePrefix + '&procname=' + procName,
timeout : 600000,
beforeSend : function() {
$('#Process' + processNum + '_Image').attr("style","visibility:visible");
},
success : function() {
$('#Process' + processNum + '_Div').append("...Successful").css('color', 'green');
$('#Process' + processNum + '_Image').attr("src","images/greencheck.png");
},
error : function() {
$('#Process' + processNum + '_Div').append("...ERROR").css('color', 'red');
$('#Process' + processNum + '_Image').attr("src","images/redx.png");
}
});
}
$(document).ready(function() {
$('#ProcTest').click(function() {
//Disable Button for action
$('#ProcTest').attr("disabled", true);
//Begin Data Refresh
updateAttdData(1, 'MTH_', 'UPDATE_1');
updateAttdData(2, 'MTH_', 'UPDATE_2');
updateAttdData(3, 'MTH_', 'UPDATE_3');
updateAttdData(4, 'MTH_', 'UPDATE_4');
});
});
</script>
<div>
<button type="button" id="ProcTest">Stored Proc Test</button>
</div>
<div>
<table>
<thead>
<tr>
<th> </th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td><img id="Process1_Image" src="images/loading.gif"
alt="Processing..." style="visibility: hidden" width="32"
height="32" /></td>
<td><div id="Process1_Div">UPDATE_1</div></td>
</tr>
<tr>
<td><img id="Process2_Image" src="images/loading.gif"
alt="Processing..." style="visibility: hidden" width="32"
height="32" /></td>
<td><div id="Process2_Div">UPDATE_2</div></td>
</tr>
<tr>
<td><img id="Process3_Image" src="images/loading.gif"
alt="Processing..." style="visibility: hidden" width="32"
height="32" /></td>
<td><div id="Process3_Div">UPDATE_3</div></td>
</tr>
<tr>
<td><img id="Process4_Image" src="images/loading.gif"
alt="Processing..." style="visibility: hidden" width="32"
height="32" /></td>
<td><div id="Process4_Div">UPDATE_4</div></td>
</tr>
</tbody>
</table>
日志
当我像上面的问题一样运行它时,我得到的日志表明,我得到了这个(我用星号
Info: Test page load
Info: null - null
Info: null - null
Info: MTH_ - UPDATE_1
Info: null - null
Info: Test page load
Info: MTH_ - UPDATE_1
Info: MTH_ - UPDATE_2
Info: MTH_ - UPDATE_3
Info: MTH_ - UPDATE_4
如果你需要更多的信息,我会根据需要更新这篇文章
编辑
因此,它似乎不仅不适用于IE,而且只适用于POST类型。我可以整天使用GET,但我想使用POST。POST在Chrome中工作,但95%的用户都在使用IE。当您到达
成功
或错误
回调时,调用ajax的函数中的变量不再存在。这些是callbacks,而不是类的成员。好的,解决方案是通过在服务器端(在ajax请求调用的页面中)打印一些内容来返回ajax回调,并使用这些内容。例如,如果您正在从服务器端打印一些JSon(请注意数据
参数,其中包含您在服务器端打印的内容):
这不是问题所在。问题在于发送到servlet的数据。如果我像您在代码块中所说的那样,图像和文本部分将停止一起工作。
Info: Test page load
Info: null - null
Info: null - null
Info: MTH_ - UPDATE_1
Info: null - null
Info: Test page load
Info: MTH_ - UPDATE_1
Info: MTH_ - UPDATE_2
Info: MTH_ - UPDATE_3
Info: MTH_ - UPDATE_4
success : function(data) {
$('#Process' + data.processNum + '_Div').append("...Successful").css('color', 'green');
$('#Process' + data.processNum + '_Image').attr("src","images/greencheck.png");
},