gpt4 book ai didi

javascript - Ajax 表单提交不加载新提交的数据

转载 作者:数据小太阳 更新时间:2023-10-29 05:36:29 25 4
gpt4 key购买 nike

我更新了 jquery,这样我就可以使用新的 jquery mobile ui 1.3,出于某种原因,我的表单不再更新页面,它以前可以工作,但不是通过 ajax,它只是在没有 ajax 的情况下提交表单,我然而,希望 ajax 只获取新数据并将其附加到 div,而不是在弹出窗口关闭时再次重新加载整个页面。

我为表单使用了一个弹出模块,在提交时它应该将新信息附加到 #content ul

JS。

<!-- Load Json data and events -->
<script type="text/javascript">
jQuery('#new_rave').live('submit',function( event ) {
$.ajax({
url: 'http://whoops/goodtimes',
type: 'POST',
dataType: 'json',
data: $('#new_rave').serialize(),
success: function( data ) {
for( var id in data ) {
jQuery('#').html(data[id]);
}
}
});
return false;
});
$(document).ready(function() {
$.getJSON('http://whoops/goodtimes', function( goodtimes ) {
$.each(goodtimes, function( goodtime ) {
var output =
"<li><a href="+this.goodtime.id+">" +
"<h3>" + this.goodtime.title + "</h3>" +
"<p>" + this.goodtime.post + "</p>" +
"<p class='ui-li-aside'><strong>" +
this.goodtime.created_at + "</strong></p>" +
"</a></li>";
$('#content ul').append(output).listview('refresh');
});
});
});
</script>

表格

<!-- New item Popup -->
<div data-role="popup" class="ui-content"
data-overlay-theme="a" data-position-to="window" id="add">
<form id="new_rave">
<label for="goodtime_title">Title</label>
<input type="text" name="goodtime[title]" id="goodtime_title">
<label for="goodtime_post">Rave</label>
<div data-role="fieldcontain">
<textarea name="goodtime[post]" id="goodtime_post"></textarea>
</div>
<input type="submit" value="submit">
</form>
</div>

和内容部分

<div id="content" data-role="content">  
<ul data-role="listview" data-theme="d" data-divider-theme="d"></ul>
</div><!-- /content -->

最佳答案

简介

你的问题可能是因为$(document).ready(function(){。在 jQuery Mobile 中,Ajax用于加载每个页面的内容在导航时进入 DOM 。因此 $(document).ready() 将在您的第一个页面加载之前触发,并且用于页面操作的每个代码都将在页面之后执行刷新。

这里的所有内容都可以在我的个人博客中找到更详细的描述 article

如果这不是问题,请使用 Firefox/Chrome 插件 Firebug 测试 ajax 调用是否已到达服务器以及是否已收到响应。

最后,不要刷新 listview 每次添加新元素时。 <强> listview 刷新是一个巨大的时间槽,每次刷新可以持续大约 50 毫秒,但如果刷新多次,您的重新设计可能会永远持续下去。

解决方案

所以改变这个:

    $.getJSON('http://whoops/goodtimes', function(goodtimes) {
$.each(goodtimes, function(goodtime) {
var output =
"<li><a href="+this.goodtime.id+">" +
"<h3>" + this.goodtime.title + "</h3>" +
"<p>" + this.goodtime.post + "</p>" +
"<p class='ui-li-aside'><strong>" + this.goodtime.created_at + "</strong></p>" +
"</a></li>";
$('#content ul').append(output).listview('refresh');
});
});

为此:

    $.getJSON('http://whoops/goodtimes', function(goodtimes) {
$.each(goodtimes, function(goodtime) {
var output =
"<li><a href="+this.goodtime.id+">" +
"<h3>" + this.goodtime.title + "</h3>" +
"<p>" + this.goodtime.post + "</p>" +
"<p class='ui-li-aside'><strong>" + this.goodtime.created_at + "</strong></p>" +
"</a></li>";
$('#content ul').append(output);
});
$('#content ul').listview('refresh');
});

编辑

不断重复发布的问题与 jQuery Mobile 如何处理事件绑定(bind)有关。因为每次要一遍又一遍地绑定(bind)事件时,都会不断地重新访问页面。在您的情况下,这将是一个执行 JSON 调用的事件。

这可以通过多种方式来防止,最常见的一种是在绑定(bind)之前取消绑定(bind)事件。例如:

$('#test-button').off('click').on('click', function(e) {
alert('Button click');
});

关于javascript - Ajax 表单提交不加载新提交的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14518190/

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