我正在编写我的第一个基于 HTML5 的应用程序,我也在编写我的第一个 Web 服务并尝试两者之间的内部连接。为此我设置了一个简单的本地 .vb
太方便了。基于Web服务如下:
<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class Verify
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
<System.Web.Services.WebMethod()> _
Public Function UsernameVerify(ByVal username As String) _
As Boolean
Return (username = "Username")
End Function
<System.Web.Services.WebMethod()> _
Public Function PasswordVerify(ByVal pass As String) _
As Boolean
Return (pass = "RandomPassword123")
End Function
End Class
我想测试我的应用程序是否能够连接到网络服务、发送数据并接收适当的返回。为此,我使用了 jQuery:
function verifyInfo(){
$.ajax(
{
Type: 'Post',
url: 'http://localhost/TestWebService/Verify.asmx/HelloWorld',
success: function(data){alert(data);},
error: function (XMLHttpRequest, textStatus, errorThrown) {
debugger;
}
});
}
现在的问题是 data 中存储的值被打印为 [object Document]
我不完全确定从这里开始哪里。从对 HelloWorld 函数调用的调用中,我期望返回一个字符串 Hello World
。当我通过在 Visual Studio 中调试进行基于浏览器的测试时,调用工作正常并返回适当的 XML 输出,例如:
<string xmlns="http://tempuri.org/">Hello World</string>
很抱歉发了这么长的帖子,但希望获得一些指导,了解如何在发布到网络服务后获取预期数据作为返回。
提前感谢您提供任何提示/提示/建议。
最佳答案
ASMX 在“d”包装器中返回结果。请参阅这篇非常好的文章 http://encosia.com/never-worry-about-asp-net-ajaxs-d-again/
所以尝试这样的事情:
success: function(data){alert(data.d);}
更新:还尝试定义 ajax 调用的正确内容类型:
$.ajax({
type: 'POST',
url: [your url]
data: [your data],
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {alert(data.d);}
});
更新 2:尝试将您的网络方法也更改为此(添加响应格式):
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
关于javascript - 努力处理从 jQuery 调用 vb.Net asmx Web 服务返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24964676/