【发布时间】:2011-06-30 23:13:05
【问题描述】:
我遇到的这个问题甚至不是同步问题,我正在等待 Ajax 请求完成。我遇到了一个问题,即当 WaitN 启动 IE 时,ajax 帖子甚至没有被触发。这是我的脚本:
$(document).ready(function () {
$("form select").change(function () {
$(this).parents().filter("form").trigger("submit");
});
$("form#theForm").submit(function (event) {
event.preventDefault();
hijack(this, UpdateList, "html");
});
function hijack(form, callback, format) {
$.ajax({
url: form.action,
type: form.method,
dataType: format,
data: $(form).serialize(),
success: callback
});
}
function UpdateList(result) {
$("#results").html(result);
}
这里是html:
<% using (Html.BeginForm("ControllerName", "ActionName", FormMethod.Post, new { id="theForm" })) { %>
<table width="100%">
<tr>
<td align="left">
</td>
<td align="right">
Fiscal Year & Period: <%= Html.DropDownList("period", Model.FiscalPeriodSelectList)%>
</td>
</tr>
</table>
<% } %>
<div id="results">
<% Html.RenderPartial("Setup", Model.ViewModel); %>
</div>
当在 selectList 中选择了不同的值时,绝对不会发生任何事情。在测试完成后,我什至让浏览器保持打开状态,以便我可以手动更改选择列表。仍然——没有任何反应。但是,当我通过 VS 运行应用程序时,选择列表上的 ajax 帖子完美运行。是不是我配置不正确?
编辑:重要的是要注意我使用基本身份验证登录,无论是在我手动运行 mvc 应用程序时还是在 NUnit 运行它时。经过进一步检查,我意识到除了 AJAX 回调之外的所有内容都在执行,当我在“警报”中捕获 AJAX 错误时,我被显示为“未经授权”。我仍然不确定如何解决我的问题以及为什么当我从 NUnit 运行我的 WatiN 测试时我会得到未经授权,但是当我手动使用 mvc 应用程序时我没有得到它。
【问题讨论】:
-
当您不在 VS 引擎的 localhost:port 下运行时,您确定您的 JQuery 路径和任何其他脚本都可以工作吗?含义 - 您的测试站点是在子目录中还是导致您的 JS 文件无法正确加载的东西?
-
脚本文件的目录似乎一切正常。
-
好吧,我的意思是你在 head 标签中的路径比你的脚本部署更重要。作为测试,有一个 alert('hi'); $(document).ready(function ()) 函数中的语句。有用吗?
-
确实如此,但它会在大约 1 秒后自行消失。
-
实际上,当 WatiN 首次打开页面时,不会显示警报。如果我在测试完成后保持页面运行(并且失败),然后手动转到页面,警报会显示,但它会自行消失(这可能与 WatiN 启动浏览器有关)
标签: asp.net-mvc ajax jquery watin