从jQuery调用ASMX WebMethod - responseText是空白的xhr.status =“错误”
我完全陷入了困境。
jquery v1.5.2 Firefox 3.6.16 ASMX
项目清单
用VS 2010,.Net Framework 3.5编写的Web服务
托管在本地计算机的VS 2010开发Web服务器上或ON
在Windows Web Server 2008 R2上运行IIS 7.5的主Web服务器
本地开发Web服务器和主生产Web服务器都表现出相同的行为
从浏览器调用Web服务时效果很好。
我得到了方法列表。
我可以点击方法名称
我可以单击Invoke按钮,调用该方法并返回结果
当我的jquery页面调用相同的Web方法时,将使用以下状态字段触发错误函数
readyState:0
responseText:“”
状态:0
statusText:“错误”
错误:function()
我的jQuery部分
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
type: 'POST',
url: 'http://localhost:1272/ndtvservices.asmx/HelloWorld',
data: '{}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(msg) {
alert("success " + msg) ;
},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message) ;
}
});
});
</script>
我的网络方法
Imports System.Web.Services
Imports System.Web.Services.Protocols
导入System.ComponentModel
Imports System.Web.Script.Services
导入System.Web.Script.Serialization
'要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行。
'_
_
_
_
公共舱服务1
继承System.Web.Services.WebService
'<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False, XmlSerializeString:=False)> _
<WebMethod()> _
Public Function HelloWorld() As String
Dim js As New JavaScriptSerializer
Dim s As String = "Hello World"
Dim sReturn As String = js.Serialize(s)
Return sReturn
End Function
结束班
system.web下的我的web配置有我在某处读取的这些条目
<webServices>
<protocols>
<add name="HttpGet"></add>
<add name="HttpPost"></add>
</protocols>
</webServices>
_
我已尝试使用上述声明进行评论和取消注释。
据我所知,对于调用此方法的非asp.net ajax页面,这不应该是必需的。
我究竟做错了什么?
谢谢一堆
最好的祝愿
艾耶
没有找到相关结果
已邀请:
1 个回复
摊揉售
并确保您的服务使用ScriptService属性进行修饰(我的VB.NET非常生疏,所以这可能会有点偏差):
另外,我会避免在$ .ajax()的url参数中使用完全限定的URI。这应该是你所需要的:
最后,如果您使用的是ASP.NET 3.5或更高版本,ASP.NET会将JSON响应包装在“.d”对象中,以防止出现与JSON数组相关的特定安全问题。你想在成功回调中“点”到那个包装器对象,如下所示: