1

我正在尝试在 IE 中进行表单提交工作。我在 Chrome、FF、Opera 和 Safari 中的工作。我相信它也适用于 IE10,但我这里没有设备可以再次测试它(我之前在 IE10 中测试过,它运行良好。我对页面做了一些更改,但我我很确定这些更改不会影响此表格)。

基本上,我有提交记录但使用 jquery.form 控件提交的表单:

<form action="@Url.Content("/ActivitySubmission/SubmitWork")" class="activityForm" id="formId-@(item)" method="post">

以及处理提交的 jQuery 代码:

$(".activityForm").submit(function (e) {
        e.preventDefault();

        var parts = $(this).prop("id").split("-");
        var activityTemplateId = parts[3];
        var resultsDivId = "#activityResults" + activityTemplateId;
        var msg = '<div style="height:40px; margin-right:20px; float:left;"><img src="/Content/Images/loadingSpinner.gif" /></div>' +
            'Saving your work...<div style="clear:both;"></div>';
        $(resultsDivId).html(msg).slideDown();

        var action = $(this).prop("action");

        $(this).ajaxSubmit({
            url: "/ActivitySubmission/SubmitWork",
            data: {activityTemplateId: activityTemplateId},
            iframe: true,
            target: resultsDivId,
            dataType: 'json',
            success: function (data, textStatus, jqXHR) {
                var parts = data.split("|");
                var status = parts[0];
                var message = parts[1];
                $(resultsDivId).html('<div class="activitySuccess">' + message.replace("\"", "") + '</div>');

                $("#reloadReminder").fadeIn("1200");

                return false;
            },
            error: function(jqXHR, textStatus, errorThrown){
                $(resultsDivId).html('<div class="activityError">Sorry, unable to act on your save or submit command.  Please let the monitor know.</div>');
                alert(errorThrown);
                return false;
            }
        });

        return false;
    });

在 IE 中,表单将发布,并在控制器中运行代码 (/ActivitySubmission/SubmitWork) 但是当它返回页面时,它没有运行它的“成功”方法,.ajaxSubmit({...});它只是给了我一个“保存/打开/运行”对话框:

保存对话框

关于为什么会在 IE 中发生这种情况以及如何改变这种情况的任何想法?

4

1 回答 1

1

如果您在 ajax 调用中意外得到“保存/打开/运行”对话框,这意味着服务器没有在 HTTP 标头中提供正确的 mime 类型信息,因此浏览器错误地将响应识别为需要下载的文件。

您需要添加一个 HTTP 标头来指定要发送的数据类型。例如,在这种情况下,看起来您正在发送一个 HTML 片段,所以发送一个指定text/html.

希望有帮助。

于 2013-04-02T14:18:07.287 回答