我有一个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]方法。感谢。
<小时/> 如果我的实际输出和返回的结果之间存在任何差异这里,那是因为我编辑了它以缩短它。感谢。
答案 0 :(得分:4)
您可以从响应中创建一个jQuery对象,并从那里读取text
值以获得所需的结果。
$('#divManagers').append($(data).text());
此帖也可以回答为什么你没有在回复中找回直接的HTML
答案 1 :(得分:1)
您需要将webResponse ContentType
设置为:"text/html"
<强>编辑:强>
但是无论如何你可以返回JSON
或XML
并获取你的数据(使用xpath的XML,JSON只是js对象)并在客户端站点上建立你的div(你可以更好地控制你打印的内容) )。服务应该只提供普通数据而不需要任何HTML内容..
答案 2 :(得分:0)
你能发布C#asmx代码吗?
您可能在响应中设置了ContentType
,如下所示:
HttpContext.Current.Response.ContentType = "text/html";
或确保设置返回类型。例如,我的服务:
[WebService]
public class MySvc : WebService {
[WebMethod (Description="Proxy for MyService")]
public String Proxy()
{return "<h1>MyHeader</h1>"}
}
更多关于SO w / jQuery和ASMX的信息:
Calling ASMX from jQuery