我发现了一些其他问题,但它们对我不起作用:(所以我发表了自己的问题:
我已经在单声道中创建了一个ASP.NET Web服务。它的代码是:
using System;
using System.Web;
using System.Web.Services;
namespace testWebservice
{
public class ws : System.Web.Services.WebService
{
public ws() {
}
[WebMethod]
public String sendCar()
{
return "44.435006,26.102314";
}
}
}
我正在尝试使用jQuery从网站上调用此Web服务:
function getCar()
{
$.ajax( {
type:'POST',
url:'http://127.0.0.1:8080/ws.asmx/sendCar',
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
success:function(msg) {
AjaxSucceeded(msg);
},
error: AjaxFailed
})
function AjaxSucceeded(result) {
alert(result.d);
}
function AjaxFailed(result) {
alert(result.status + ' ' + result.statusText);
}
}
当我运行该页面时,我收到一条警告“0错误”。 Cay有人给我一些建议吗?
答案 0 :(得分:1)
您服务中的代码不正确。
你至少错过了[System.Web.Script.Services.ScriptService]
您的班级ws
上的属性。
在http://www.tomot.de/en-us/article/8/asp.net/how-to-use-jquery-to-call-a-webservice-asmx-method我发布了几天前为我工作的样本。
请注意,将返回类型从String更改为其他内容,需要您发送真正的json对象。
答案 1 :(得分:1)
要使服务工作,您需要:
向您的项目添加对System.Web.Extension
。
在您的ws来源中添加using System.Web.Script.Services;
。
添加:
[ScriptService]
到你的ws班。
添加:
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
在<httpHandlers>
标记下的web.config中。
如果您从按钮调用getCar()
,请在方法调用后添加return false;
,以便点击不会导致回发。
例如:
[Default.aspx的]
<%@ Page Language="C#" Inherits="testWebservice.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head runat="server">
<title>jQuery Web Service call from Mono using JSON</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
function getCar()
{
$.ajax( {
type:'POST',
url:'http://127.0.0.1:8080/ws.asmx/sendCar',
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "json",
success:function(msg) {
AjaxSucceeded(msg);
},
error: AjaxFailed
})
function AjaxSucceeded(result) {
alert(result.d);
}
function AjaxFailed(result) {
alert(result.status + ' ' + result.statusText);
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Button runat="server" id="btnTest" Text="Call WebService" OnClientClick="getCar(); return false;" />
</form>
</body>
</html>
[ws.asmx.cs]
using System;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
namespace testWebservice
{
[ScriptService]
public class ws : System.Web.Services.WebService
{
public ws() {
}
[WebMethod]
public String sendCar()
{
return "44.435006,26.102314";
}
}
}
[web.config中]
<?xml version="1.0"?>
<!--
Web.config file for testWebservice.
The settings that can be used in this file are documented at
http://www.mono-project.com/Config_system.web and
http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
-->
<configuration>
<system.web>
<compilation defaultLanguage="C#" debug="true">
<assemblies>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
</compilation>
<customErrors mode="RemoteOnly">
</customErrors>
<authentication mode="None">
</authentication>
<authorization>
<allow users="*" />
</authorization>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpHandlers>
<trace enabled="false" localOnly="true" pageOutput="false" requestLimit="10" traceMode="SortByTime" />
<sessionState mode="InProc" cookieless="false" timeout="20" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
<pages>
</pages>
</system.web>
</configuration>
答案 2 :(得分:0)
只要我能看到,你就是使用旧的asp.net 2.0风格的webservice。为什么要将json设置为发送的数据类型?我不认为这适合那种网络服务