我正在编写我的第一个基于HTML5的应用程序,我也正在编写我的第一个Web服务并尝试在两者之间建立内部连接。我为此设置了一个简单的本地.vb
网络服务,如下所示:
<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
我想测试我的应用是否能够连接到Web服务,发送数据并获得适当的回报。为此,我使用了jQuery:
function verifyInfo(){
$.ajax(
{
Type: 'Post',
url: 'http://localhost/TestWebService/Verify.asmx/HelloWorld',
success: function(data){alert(data);},
error: function (XMLHttpRequest, textStatus, errorThrown) {
debugger;
}
});
}
现在的问题是存储在数据中的值打印为[object Document]
,我不完全确定从何处开始。从调用HelloWorld函数调用,我希望返回一个字符串Hello World
。当我通过visual studio中的调试进行基于浏览器的测试时,调用工作正常并返回适当的XML输出,例如:
<string xmlns="http://tempuri.org/">Hello World</string>
很抱歉这么长的帖子,但希望得到一些关于如何在发布到网络服务后将预期数据作为回报获得的指导。
提前感谢您提供任何提示/提示/建议。
答案 0 :(得分:2)
ASMX将结果返回到&#34; d&#34;包装。请参阅这篇非常好的文章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