2012-07-19 34 views
0

我试图调用Web服务,并始终得到一个错误,该错误警报显示“未定义”jquery的asp.net web服务调用不工作

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static string Test() 
{    
    JavaScriptSerializer js = new JavaScriptSerializer(); 
    return js.Serialize("Hello"); 
} 

这是脚本

$.ajax({ type: "POST", 

    contenttype: "application/json; charset=utf-8", 
    data: "{}", 
    url: "WorkflowAjaxHelper.asmx/Test", 
    dataType: "json", 
    async: false, 

    success: function (res) { 
     alert('success'); 
    }, 

    error: function (err) { 
     alert(err.text); 
    } 
}); 
+0

你不应该看err.responseText吗? JS调试器非常方便。 – 2012-07-19 14:14:28

+0

感谢保罗,当更改这个错误是'测试web服务名称无效' – jorgechess 2012-07-19 14:28:00

回答

1

文本在错误对象上无效。你可以使用任何以下的,以获得更多的信息:

responseText 
status 
statusText 

利用内置在Chrome,IE或Firefox帮助调试的调试器。你也可以使用console.log一个对象,并且chrome和firefox很好,可以让你点击对象模型来查看可用的东西。

+0

当更改此错误是'测试webservice名称无效' – jorgechess 2012-07-19 14:29:35

+0

@jorgechess - 你确定它应该是一个静态方法,我有一个类似的问题,因为我已经将一个方法从页面移动到asmx,并且页面中的web方法需要是静态的,因为页面实例不是由于开销而创建的? – 2012-07-19 14:34:09

+0

我删除了静态但仍然出现错误 – jorgechess 2012-07-19 14:48:20

0

您的.asmx.cs文件的顶部是否具有以下属性,Jorge?

/// <summary> 
    /// Summary description for PartServices 
    /// </summary> 
    [WebService(Namespace = "http://tempuri.org/")] 
    [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. 

    // This bit here!!! 

    [System.Web.Script.Services.ScriptService] 
    public class PartServices : System.Web.Services.WebService 
+0

我已经将ResponseFormat更改为XML和数据类型:xml并且工作! 谢谢! – jorgechess 2012-07-19 14:54:25