【发布时间】:2009-08-12 14:52:46
【问题描述】:
我指的是类似于the one in this post 的问题,因为那里描述的解决方案对我不起作用。
起点是一个带有 jQuery UI 选项卡的 HTML 页面(称为配置文件):
<div id="tabs">
<ul>
<li><a href="#realtab">Foo Bar</a></li>
<li><a href="?cmd=changePassword" title="pwd-settings">
<span> Dynamic tab </span>
</a></li>
</ul>
</div>
在 DIV 中呈现的 HTML 是:
<form method="post" id="subform" action="http://myhost.com/example.php">
<input type="hidden" name="cmd" value="submitChangedPassword">
<dl>
<dt>PWD1</dt>
<dd><input type="password" name="password" /></dd>
<dt>PWD CHK</dt>
<dd><input type="password" name="passwordChk" /></dd>
<dt> </dt>
<dd><input type="submit" value=" Apply " /></dd>
</dl>
</form>
另外,我使用下面的JS脚本(基于引言中链接的帖子):
$('#subform').submit(function() { // catch the form's submit event - should I use the form id?
$.ajax({ // create an AJAX call...
data: $(this).serialize(), // get the form data
type: $(this).attr('method'), // GET or POST
url: $(this).attr('action'), // the file to call
success: function(response) { // on success..
$('#pwd-settings').html(response); // update the DIV - should I use the DIV id?
}
});
return false; // cancel original event to prevent form submitting
});
记录已提交,但行为因浏览器而异:
IE、Firefox、Opera:将内容正确放入 DIV,非常棒!
Safari、Chrome:内容正确,但整个页面都会刷新结果
请让我知道我做错了什么。非常感谢!
更新 1: 名为 pwd-settings 的 DIV 仅由选项卡界面创建。请注意,行为是相同的,即使我将其添加到 HTML(使用<div id ="pwd-settings"></div>)。
更新 2: 我还删除了上面的 JavaScript,所有浏览器都变成了“正确的内容,但刷新了整个页面”=“旧 URL,新内容”。一旦我将 JavaScript 添加到在 DIV 中呈现的 HTML 页面,它就开始在上述浏览器中工作。因此,我看到两个可能的错误原因:
1) JS 根本没有在浏览器出现错误或执行
2) DIV 内的 JS 不起作用,因为它寻址的 DIV 只存在于外部
【问题讨论】:
-
我不确定您在问什么——基本上,您使用 Ajax 提交表单并将响应加载到 div 中。 div在哪里?我在您发布的代码中没有看到它。 div是否在tabs界面内?
-
还有两个问题:你试过不带tab UI的吗?只需制作一个模拟页面来测试表单/jQuery?另外,当你说整个页面被刷新时——就像它没有使用 Ajax,或者整个页面被替换为响应文本?
-
我觉得你缺少一些东西,因为你的一些描述似乎缺乏。你能把你的代码贴在某个地方,这样我们就可以看到完整的东西并自己尝试一下吗?在 Firefox 中,您是否使用 FireBug 调试程序?
-
您好,Nathan,您可以在gbits.org/div 找到一个快速而肮脏的实现,展示我之前尝试描述的行为(包括包含所有文件的 ZIP)。是的,我正在使用 FireBug,但它没有给我任何提示;(非常非常感谢!!
标签: php jquery ajax html webforms