问一个很奇怪的问题. 这里人气旺. 解决问题给全分

moonlightme 2012-07-10 03:08:05
卤煮在前台有一个ajax方法. 去webservice中请求一串数据回来append到一个table中

webservice返回的数据格式如下:
<tr><td>123</td><tr>

客户端接收到的数据如下:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">
<tr><td>123</td></tr>
</string>

求问用什么方法可以在响应中不接收到那两个奇怪的xml标记或者不用replace方法怎么去掉他们, 为什么webservice返回的数据好好的但是客户端接收到的直接不是dom对象,我怎么样可以把他转成dom对象

...全文
189 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

webservice返回的就是这样的,你data.d得到就是了。服务器端使用Decode是无用的,传输xml必须进行编码的,你可以在客户端使用js替换

x = data.d
x = htmlDecode(x)

即可

function htmlDecode(value){
return $('<div/>').html(value).text();
}




……
[/Quote]
孟子说的对。
moonlightme 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

以上2种方法都可以正确生成

$.ajax({
type: "post", //注意这里是 post
url: "WebService4.asmx/HelloWorld",
dataType: "xml", //返回数据的格式
success: function (result) {
$("#x").append(result.documentElement.firstChil……
[/Quote]


感谢. 目前我用的text和html来接收响应. 看来是这个问题. 用xml和json对象都OK. 太难了
moonlightme 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

以上2种方法都可以正确生成

$.ajax({
type: "post", //注意这里是 post
url: "WebService4.asmx/HelloWorld",
dataType: "xml", //返回数据的格式
success: function (result) {
$("#x").append(result.documentElement.firstChil……
[/Quote]

感谢. 看来目前先不能用text来设定返回值了. 太难处理了. 用xml和json对象都可以搞定.
孟子E章 2012-07-10
  • 打赏
  • 举报
回复
以上2种方法都可以正确生成

$.ajax({
type: "post", //注意这里是 post
url: "WebService4.asmx/HelloWorld",
dataType: "xml", //返回数据的格式
success: function (result) {
$("#x").append(result.documentElement.firstChild.nodeValue)
}
});


<table id="x" border="1"></table>
孟子E章 2012-07-10
  • 打赏
  • 举报
回复
返回xml格式也是可以的

方法

$.ajax({
type: "post", //注意这里是 post
url: "WebService4.asmx/HelloWorld",
dataType: "xml", //返回数据的格式
success: function (result) {
alert(result.documentElement.firstChild.nodeValue)
}
});
moonlightme 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

那是调用方法有问题了


$.ajax({
type: "post", //注意这里是 post
url: "WebService4.asmx/HelloWorld",
contentType: "application/json;charset=utf-8", //提交数据的方法格式
dataType: "json", //返回数据的格式
success: function (……
[/Quote]


$.ajax({
type: "POST",
dataType: "html",
url: "AppInterface/API_user.asmx/getDepartments",
data: "param=" + escape(param),
success: function (responseText) {
alert(responseText);
}
});

这个应该没什么问题. 我的webservice返回的只是一个string. 不是任何文档对象的字符串
moonlightme 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

web service返回了正确的格式,看不出哪有问题。

"我的webservice返回的不是xml对象" 你是怎么定制让它不返回xml的?
[/Quote]

我在ajax请求中设置了datatype为html和text. 如果这个返回格式正确, 怎么样可以把他转成标准的html数据可以进行显示
孟子E章 2012-07-10
  • 打赏
  • 举报
回复
那是调用方法有问题了


$.ajax({
type: "post", //注意这里是 post
url: "WebService4.asmx/HelloWorld",
contentType: "application/json;charset=utf-8", //提交数据的方法格式
dataType: "json", //返回数据的格式
success: function (result) {
alert(result.d)
}
});

种草德鲁伊 2012-07-10
  • 打赏
  • 举报
回复
web service返回了正确的格式,看不出哪有问题。

"我的webservice返回的不是xml对象" 你是怎么定制让它不返回xml的?
moonlightme 2012-07-10
  • 打赏
  • 举报
回复
我把最原始的返回数据完整帖一下.. 哪位大神能找个方法帮我把他解析成dom对象


<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://tempuri.org/"><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr><tr><td>2008</td><td>分销部</td><td><a href='#' onclick=''>修改</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' onclick=''>删除</a></td></tr></string>
moonlightme 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

web service怎么返回的,它多做了一个HTMLEncode,要不然在服务器端去除,要不然在客户端做HTMLDecode
[/Quote]

webservice只声明了一个string .做了处理以后返回了这个string.就变成了一堆乱七八糟的数据. 我在客户端做htmldecode无效. 卡住不执行了
moonlightme 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
webservice返回的就是这样的,你data.d得到就是了。服务器端使用Decode是无用的,传输xml必须进行编码的,你可以在客户端使用js替换

x = data.d
x = htmlDecode(x)

即可

function htmlDecode(value){
return $('<div/>').html(value).text();
}
[/Quote]


我的webservice返回的不是xml对象. 所以.d应该是无效的. 直接显示未定义.

类似这种数据
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">
<tr><td>123</td></tr>
</string>
我用htmldecode也无效. 应该是方法报错. 那一行代码直接卡住不执行.
理想就像内裤 2012-07-10
  • 打赏
  • 举报
回复
HtmlDecode
  • 打赏
  • 举报
回复
那个没有进行解码。

string str= "<tr><td>123</td></tr>";
str = Server.HtmlDecode(str);
孟子E章 2012-07-10
  • 打赏
  • 举报
回复
webservice返回的就是这样的,你data.d得到就是了。服务器端使用Decode是无用的,传输xml必须进行编码的,你可以在客户端使用js替换

x = data.d
x = htmlDecode(x)

即可

function htmlDecode(value){
return $('<div/>').html(value).text();
}



xdf008 2012-07-10
  • 打赏
  • 举报
回复
HttpUtility.HtmlDecode
threenewbee 2012-07-10
  • 打赏
  • 举报
回复
web service怎么返回的,它多做了一个HTMLEncode,要不然在服务器端去除,要不然在客户端做HTMLDecode

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧