Skip to main content
 首页 » 编程设计

c#之在 jquery 中调用 webservice (asmx) 时,html 返回为 xml

2024年02月03日27wuhuacong

我有一个 jquery block ,可以做一些像这样的 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