我正在尝试使用jQuery .load()从asmx Web服务获取直接html:
$( '#靶')负载( 'MyService.asmx / GetHtml');
在.NET代码中,GetHtml()以字符串形式返回:
[WebMethod(EnableSession = false)]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Xml)]
public string GetHtml()
{
return "<span>Hi</span>";
}
返回:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/"><span>Hi</span></string>
请注意,字符串已编码。使用该编码,$ .load无法正常工作。显示的文本实际上显示了标签。
如何才能获得WebMethod调用才能返回此内容?
<span>Hi</span>
答案 0 :(得分:6)
这个怎么样:
不是从服务中提取HTML,而是拉数据,然后使用jquery将该数据插入DOM。
然后您不必对XML进行XML解码。
答案 1 :(得分:4)
我很确定如果你想从服务中直接回复HTML,你需要使用处理程序(.ashx)而不是.asmx。我不知道如何让.asmx不以某种格式对数据进行编码(尽管你可以改变那种格式)。
那就是说,@ Randolpho也有一个好点。
答案 2 :(得分:1)
简短的答案(正如其他海报所建议的那样)是:不要这样做。返回JSON并使用JS将其制作成所需的HTML。 See this discussion了解更多详情/评论。
但是,如果你别无选择,只能返回HTML(也许你的项目mgr /架构师因为某种原因害怕真正的网络服务设计),我同意Jake T的答案:使用ajax来调用ASPX页面。 / p>
ASPX的终身目标是返回HTML(与ASMX或ASHX不同)。最重要的是,编写良好的ASPX将HTML与逻辑/代码隐藏分开。这样,当您需要将HTML从列表更改为表(或其他)时,您无需重新编译,重新测试和重新部署整个系统! :)
答案 3 :(得分:0)
最简单的方法是根本不使用Web服务。带有包含HTML的响应的HTTP请求基本上是Web上最常见的操作,因此默认工具就是为此而设计的。在asp.net的情况下,它将是一个aspx文件。