我有一个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/"><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的原因
How to get clean/pure HTML from ASMX web service call
关于c# - 在jquery中调用webservice(asmx)时,html作为xml返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7984203/