我有一个 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/"><div id=divContainer></h4>Manager Name</div></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
关于c# - 在 jquery 中调用 webservice (asmx) 时,html 返回为 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984203/