我有一个jquery块,它执行一些如下的ajax任务:

    $.ajax({
    url: '/webservices/manager.asmx/addNew',
    type: "POST",
    dataType: "html",
    data: { id: Id, name: Name, dept: Dept, helpId: HelpId },
    success: function (data) {
        //append to the table
        $('#divManagers').append(data);
    },
    error: function () {
        //console.log('error');
    }
});


这样它就通过了,asmx接收了数据,然后我计算了东西,最后我用类似的响应:

<div id="divContainer">
         <h2>Manager Name</h2>
</div>


现在,即使将我的dataType设置为html,我的响应也被包含在xml字符串中:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">&lt;div id=divContainer&gt;&lt;/h4&gt;Manager&nbsp;Name&lt;/div&gt;</string>


它们实际上只是被附加到页面上,即完整的文本,而没有呈现为实际的html元素。

请问发生了什么事?

编辑

我只是在我的asmx中构建html。就像是

StringBuilder component = new StringBuilder();
component.appendFormat("<div id='divComponent'><h2>{0}</h2></div>', managerDataRow["ManagerName"].ToString());
return component.ToString();


我的asmx是单独的正确的asmx页面,而不是普通aspx页面中的[webmethod]方法。谢谢。


如果我的实际输出和返回结果之间有任何差异,那是因为我对其进行了编辑以使其简短。谢谢。

最佳答案

您可以从响应中创建一个jQuery对象,并从那里读取text值以获得所需的结果。

$('#divManagers').append($(data).text());




此外,这篇文章可能会回答为什么您没有在响应中直接获取HTML的原因

How to get clean/pure HTML from ASMX web service call

关于c# - 在jquery中调用webservice(asmx)时,html作为xml返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7984203/

10-13 07:38