【问题标题】:HTML reponse after Ajax call is stripped of some tagsAjax 调用后的 HTML 响应被剥离了一些标签
【发布时间】:2013-10-03 11:41:57
【问题描述】:

我正在对返回部分视图的控制器中的操作进行 ajax 调用。部分视图是一个将被附加的行,或者它将替换项目网格中的现有行(取决于我是否正在添加或编辑行项目)。 在 Google Chrome 的“网络”选项卡中,我得到了正确的 HTML 字符串,例如:

<tr class="" data-id="1c4daceb-2afb-413b-8adc-d20b4d8969e5">
    <td><img style="width:100px; height:100px;" src="http://localhost/Project/6b39488b-db2d-495e-957c-ede0eb462292.png" data-id="1c4daceb-2afb-413b-8adc-d20b4d8969e5"/></td>
    <td>bvcbvX</td>
    <td>6b39488b-db2d-495e-957c-ede0eb462292.png</td> 
</tr> 

但在我的 Ajax 成功函数中:

function onDataEdited(data, status, xmlhttp) { 
    alert(data);
}  

我去掉了行和标签,如下所示:

<img style="width:100px; height:100px;" src="http://localhost/Project/6b39488b-db2d-495e-957c-ede0eb462292.png" data-id="1c4daceb-2afb-413b-8adc-d20b4d8969e5"/> 
    bvcbvX
    6b39488b-db2d-495e-957c-ede0eb462292.png

所以来自 jquery 的东西会剥离我的标签,只留下内容。

对动作的调用是通过 Ajax 完成的,如下所示:

function MakeAjaxCall() {
    $('#myForm').ajaxForm({
        iframe: true, ---> here is needed since I am adding a file upload from my form
        beforeSubmit: function () { 
            if (!$('#myForm').valid())
                //process validation

            return $('#myForm').valid();
        },
        success: function (data, status, xmlhttp) {  
            if (xmlhttp.getResponseHeader('ErrorHeader') == null ||
                xmlhttp.getResponseHeader('ErrorHeader') == "") {

                //process success
            }
            else { 
                //process error
            } 
        },
        error: function (xhr, textStatus, errorThrown) {
            alert(xhr); 
        }
    });
} 

谁能告诉我如何在不被剥离和标签的情况下获取我的响应数据?

我正在使用这个 jquery 插件 (malsup.com/jquery/form) 来制作“ajaxified”表单,以便通过 Ajax 提交包含文件的表单。 该插件中的“ajaxForm”方法只有“xml”、“json”、“script”和 null(我正在使用)作为数据类型,并且响应中仍然去除了“xml”的标签。如果我设置 'json' 或 'script' 它会引发客户端错误,指定它无法解析响应(当它是 html 时试图将其解析为脚本)。

【问题讨论】:

  • 尝试使用$.post() 而不是.ajaxForm
  • 我需要使用 ajaxForm,因为我在提交表单时也在加载图像,并且需要将 iFrame 设置为 true。无论如何,我在网络(在 Chrome 中)收到的响应正是我所需要的,但在那之后它被剥离了 和 我不明白为什么。

标签: asp.net-mvc jquery asp.net-mvc-4


【解决方案1】:

可能是数据类型的问题:http://malsup.com/jquery/form/#options-object

【讨论】:

  • 我已经尝试使用 'json' 和 'script' 作为 dataType 并且它会引发客户端错误。对于“xml”,它可以解析响应(不抛出错误)。如果我没有为 dataType 指定任何内容(默认行为),我会得到精简的响应。
  • 对于 'xml' 我可以解析响应,但它仍然没有 HTML 标签。
  • jQuery 还具有用于 ajax 调用中数据类型的文本和 html。试试 'html' 看看是否可行?
  • 我正在使用这个 jquery 插件 (malsup.com/jquery/form) 来制作“ajaxified”表单,以便通过 Ajax 提交包含文件的表单。此插件中的“ajaxForm”方法只有“xml”、“json”、“script”和 null(我正在使用)作为数据类型。我已经在 dataype 'html' 中设置,并且响应仍然没有标签。
  • 这听起来像是插件无法处理 HTML 的问题——这会很奇怪,因为 jquery 内置了这个。也许将服务器响应作为 JSON 发送,然后将数据解析为 HTML ajax 调用。
猜你喜欢
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 2013-07-11
  • 1970-01-01
  • 2012-11-21
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多