如何解决表单帖子和ajax帖子之间的奇怪冲突?
Posted
技术标签:
【中文标题】如何解决表单帖子和ajax帖子之间的奇怪冲突?【英文标题】:How to resolve strange conflict between form post and ajax post? 【发布时间】:2012-09-08 04:31:10 【问题描述】:在一页上,我正在尝试使用 ajax 来编辑现有值。我通过使用jQuery Inline Edit 并发布新数据、更新记录并成功返回来做到这一点。
这工作正常。
接下来我实现了添加新记录的功能,为此我在表格末尾有一个表单,它提交帖子数据然后重定向回原始页面。
他们每个人都单独工作,但在我使用表单添加新记录后,内联编辑停止工作。如果我关闭网页并重新打开它,它会再次正常工作,直到我使用该表单并且它再次脱离轨道。
我尝试了许多解决方案,清除会话数据,为表单指定一个单独的名称,重定向到另一个页面(这确实有效,但并不理想,因为我希望表单重定向回原始位置)。
这是一个视图表单数据的示例:
<?php foreach($week->incomes as $income):?>
<tr>
<td><?php echo $income->name;?></td>
<td style="text-align:right;" class="editableSingle income id<?php echo $income->id;?>">$<?php echo $income->cost;?></td>
</tr>
<?php endforeach;?>
<?php echo form_open('budget/add/'.$week->id.'/income/index', 'class="form-vertical" id="add_income"'); ?>
<tr>
<td>
<input type="text" name="name" class="input-small" placeholder="Name">
<input type="text" name="cost" class="input-small" placeholder="Cost">
</td>
<td>
<button type="submit" class="btn btn-small pull-right"><i class="icon-plus "></i></button>
</td>
</tr>
<?php echo form_close(); ?>
这是javascript初始化代码:
$(function()
$.inlineEdit(
income: 'budget/update_income/',
expense: 'budget/update_expense/'
,
animate: false,
filterElementValue: function($o)
if ($o.hasClass('income'))
return $o.html().match(/\$(.+)/)[1];
else if ($o.hasClass('expense'))
return $o.html().match(/\$(.+)/)[1];
else
return $o.html();
,
afterSave: function(o)
if (o.type == 'income')
$('.income.id' + o.id).prepend('$');
if (o.type == 'expense')
$('.expense.id' + o.id).prepend('$');
,
colors: error:'green'
);
);
如果我可以提供更多信息来澄清我的尝试等,请告诉我。
临时修复
我似乎想出了一个解决方法,但并不理想,因为我仍然不确定是什么导致了这个问题。
我创建了一个名为重定向的方法。
public function redirect()
redirect('');
我现在在表单提交之后调用它,它暂时允许我的多个帖子提交工作。
【问题讨论】:
你能把你初始化javascript的部分贴出来 您在提交表单后检查了 Firebug 控制台是否有任何错误?您还可以在常规表单提交后检查代码“$.inlineEdit(...)”是否正在执行。 控制台区域中似乎没有出现任何内容。我开始将问题归结为 redirect() 方法。重定向后它不再让我使用内联编辑器。 尝试 ctrl+shift+j 查看控制台错误。此外,您正在使用的内联编辑将其克隆为其他唯一 ID,并用新数据填充它,看看它是否仍然有效 您是否对这两个操作使用相同的控制器和方法?只是好奇。 【参考方案1】:请尝试通过替换 jquery 符号来查看。
$ 应该被替换为 jQuery 然后它将创建新的实例以正常工作
【讨论】:
【参考方案2】:我在某处听说如果将表单放在 table 标记内,jquery 将无法工作。 它需要在表格之外,如下所示:
<form>
<table>
...
</table>
</form>
jQuery does not bring the contents of a form element if inside a table element on an ajax load
经过测试,我发现它是部分正确的,(又名不可靠)...这就是我停止使用表格的原因。
【讨论】:
嗯,我会看看我的代码,看看这是否有所作为。谢谢:)以上是关于如何解决表单帖子和ajax帖子之间的奇怪冲突?的主要内容,如果未能解决你的问题,请参考以下文章