我正在尝试使用jQuery调用.NET asmx Web服务。我一直在使用指南here和here,据我所知,我已经跟着他们去了这封信。
服务代码:
[WebService(Namespace = "http://tempuri.org/", Description = "...")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class MyService : WebService
{
private static readonly IKernel NinjectKernel = new StandardKernel(new IocModule());
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public string HelloWorld(string name)
{
return string.Format("Hello {0}", name);
}
我很乐意浏览Firefox中的服务并调用HelloWorld方法。
客户端jQuery:
if (ajaxRunning) {
return;
}
ajaxRunning = true;
var webMethod = "http://localhost:51546/MyService.asmx/HelloWorld";
var inputname = "Jack";
$("[id$='spinner']").show();
$("[id$='spinnerText']").show();
$.ajax({
type: "POST",
url: webMethod,
contentType: "application/json; charset=utf-8",
dataType: "json",
data: {name: inputname},
success: function (msg) {
$("[id$='spinner']").hide();
$("[id$='spinnerText']").hide();
ajaxRunning = false;
alert(msg.d);
},
error: function() {
$("[id$='spinner']").hide();
$("[id$='spinnerText']").hide();
ajaxRunning = false;
alert("Fail");
}
});
当我运行javascript时,Firebug中没有错误,只有“失败”警告弹出窗口。请告诉我,我是否做了明显错误的事情?
提前致谢
答案 0 :(得分:1)
需要对发送到WebService的参数进行字符串化。 的:
data: {name: inputname}
需要替换为:
data: JSON.stringify({name: inputname})