Javascript$.get并不总是在点击时更新
Javascript $.get not always updating on click
我想知道为什么当我点击按钮时,我的代码没有更新ajax调用。它只在我刷新页面后显示。下面的我的代码:
以下是完整的jquery/javascript代码:$(document).ready(function(){$("#savesubminbutton").live('click',function(){
$.post('save-sub-main.php', $("#submainform").serialize(), function(data) {
$('#submain_save_message').html(data);
});
$('#submain').hide();
// Load data after submission
$.get('getsubmain.php', { mainid: "<?php echo $_GET['id']; ?>" },
function(data) {
$('.submain_message').html(data);
});
});
}); //end
这是HTML表单部分
<div id="submain">
<form id="submainform" name="submainform" method="post" action="" enctype="multipart/form-data" >
<table><input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<!--<tr><td width="289" align="right">Jou naam:</td><td><input type="text" name="yourname" id="yourname" style="background-color:lightblue;" /></td></tr>
<tr><td width="289" align="right">Jou e-posadres:</td><td><input type="text" name="email" id="email" style="background-color:lightblue;"/></td></tr>-->
<tr><td width="289" align="right">Naam van die geskiedkundige figuur (bv. Jan van Riebeeck):</td><td><input type="text" name="name" id="name" /></td></tr>
<tr><td width="289" align="right">Foto van die geskiedkundige figuur :</td><td><input id="file_upload" name="file_upload" type="file" /></td></tr>
<tr><td width="289" align="right"><div id="filname"></div></td><td><input id="filename2" name="image" type="hidden" value="" /></td></tr>
<!--<tr><td width="289" align="right">Naam van jou inskrywing :</td><td><input type="text" name="title" id="title" /></td></tr>-->
<tr><td width="289" align="right">Datum waarop die inskrywing gemaak is (bv. 1652):</td><td><input type="text" name="date" id="date" /></td></tr>
<tr><td width="289" align="right">Status update (bv. Wat sien ek daar in die verte? Is dit 'n tafel?):</td><td><textarea name="message" id="message"></textarea></td></tr>
<input type="hidden" name="mainid" value="<?php echo $_GET['id']; ?>" />
<tr><td></td><td><div id="savesubmainbutton" style="color:blue"><input type="button" value="Save" /></div></td></tr>
</table>
</form>
请记住,您的ajax调用是异步的,因此在执行get之前,post没有返回数据-如图所示更改代码。
$(document).ready(function() {
// Save SubMain data
$("#savesubmainbutton").live('click',function(){
$.post('save-sub-main.php', $("#submainform").serialize(), function(data) {
$('#submain_save_message').html(data);
$('#submain').hide();
// Load data after submission
$.get('getsubmain.php', { mainid: "<?php echo $_GET['id']; ?>" },
function(data) {
$('.submain_message').html(data);
});
});
});
})//结束
您的$.get
不会在$.post
的回调中被调用。因此,$.get
正在运行,但由于数据尚未提交,它不会返回任何新数据。
如果您将$.get
移动到回调内部,它应该按预期工作。
尽管不麻烦进行第二次ajax调用,而只是在$.post
的返回数据中返回$.get
的数据会更好、更高效。
如下所示,假设您将数据作为json对象返回,这样您就可以简单地为响应的两个不同部分提供两个变量。
$.post('save-sub-main.php', $("#submainform").serialize(), function(data) {
$('#submain_save_message').html(data.save_message);
$('#submain').hide();
$('.submain_message').html(data.return_data);
},'json');
Get请求可以由浏览器缓存,如果它们使用相同的参数,请参阅此处了解更多详细信息。
您可以使用POST或添加一个伪参数,比如ticks或current time,这些参数会有所不同,以强制不缓存GET。
一些观察结果。如果要替换默认的提交行为,最好确保取消单击事件,否则将发生表单的默认行为。
此外,post是异步的,因此您需要确保您想要执行的任何后续工作都是在回调函数中完成的。
相关文章:
- Javascript循环不会自我更新
- 添加文字和评论功能更新Div
- AngularJS:ng之后,重复$scope值未按预期更新
- jquery select()/window.get选择仅在鼠标抬起后更新
- 从$http.get调用更新Angular作用域变量
- angularJS范围在HTTP get之后不会更新
- PHP 会话变量在第一页的值在第二个 GET 请求后未更新为第二页会话变量的值
- $scope变量在控制器中没有更新,在成功的$http GET请求中
- 在不使用.get().set()的情况下更新Ember.js中嵌套对象中的值
- Angularjs:如何从$http-get-server调用更新数据
- UI在$http.get之后没有更新
- 如何更新从$.get打开的.txt文件中的文本
- GET查询没有更新占位符
- 如何让Angular在ajax get之后更新集合
- JS使用GET请求参数更新URL
- Javascript$.get并不总是在点击时更新
- Angularjs 不更新 $http.get 中的数据
- 如何使用 jquery 更新 url 中的 get 参数
- 从$http执行GET调用后,无法更新$作用域
- 使用jQuery AJAX GET与AngularJS不更新视图