2012-06-18 59 views
0

我正在处理ASP.NET Web应用程序。webservice不被调用

我想使用jquery ajax来调用Web服务。 webservice将返回一个字符串。

这是我的web服务:

[WebService(Namespace = "http://localhost/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService] 
public class MyWebService : System.Web.Services.WebService 
{ 

    [WebMethod] 
    public string GetStringForPerson(string Personname, int StartYear, int EndYear) 
    { 
     string S = "Hello" + Personname + " You where born between " + StartYear + " and " + EndYear; 
     return S; 
    } 
} 

而Ajax的功能将其称之为:

function GetStringForPerson(Name) { 
     $.ajax({ 
      type: "POST", 
      url: "Service/MyWebService.asmx/GetStringForPerson", 
      dataType: "json", 
      data: "{'Personname':Name, 'StartYear':'2001', 'EndYear':'2005'}", 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       alert(data); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert(textStatus); 
       alert(XMLHttpRequest.status); 
       alert(errorThrown); 
      } 
     }); 
    } 

但是,当我把它,我得到一个错误500“内部服务器错误”

我在Web方法中放置了一个断点,但没有达到它。

可能是什么问题?

感谢

+0

这是我在文章中继续参考使用jQuery与ASMX Web服务时 - http://encosia.com/using-jquery-to-consume-aspnet-json-网页服务/。 – jrummell

回答

1

一个错误,我看到的是Name变量,不发送作为字符串而不是变量,因为它是。 因此改变这一行:

data: "{'Personname':'" + Name + "', 'StartYear':'2001', 'EndYear':'2005'}", 
+0

@youssef如果名称包含任何像'''的字符,它可能会破坏你的行,也可能想用encodeURIComponent对它进行编码 – Aristos