0

我正在为现有的 ASP.NET MVC 3 网站创建一个移动站点,并选择使用 jQuery mobile。到目前为止一切都很好,但是当我尝试将我的一个执行 Ajax 发布到返回 JavaScriptResult 的操作的视图中重用时,UI 最终会跟随发布 URL,而不仅仅是运行返回的 JavaScript。

由于这是一个重用操作,并且对于桌面站点,所有浏览器只执行 JavaScript 并按预期保留在页面上,我只能假设 jQuery mobile 中的某些东西会导致导致浏览器跟随 URL 的附加行为。

谁能告诉我什么,以及如何阻止浏览器跟踪帖子 URL?

@using (Ajax.BeginForm("DoSomething", "Controller", null, new AjaxOptions { LoadingElementId = "AjaxLoadGif" }))
{

    ... form elements etc

    <input id="btn" class="btn" type="submit" name="" value="Click Me"/>
}

目标动作看起来像......

public JavaScriptResult DoSomething(SomeInfo info)
{

    return JavaScript('showValidationErrorHtml(); return false;');

}

浏览器最终位于http://site.com/Controller/DoSomething

4

1 回答 1

1

您必须明确告诉 jQuery Mobile 不要劫持表单提交。您可以通过在标签上设置data-ajax="false"属性来做到这一点:<form>

<form data-ajax="false" ...>
    ...
</form>

像这样设置表单意味着您必须自己处理表单的 AJAX 提交。我不熟悉 ASP.net MVC 3,但如果这还没有完成,那么这里是一个例子:

$(document).on('submit', '#my-form-id', function () {
    //handle form submission, most likely with $.ajax([OPTS]);
    return false;
});
于 2012-09-17T16:51:26.813 回答