ASP .NET使用来自javascript的ajax请求调用Webmethod

时间:2015-05-12 18:28:07

标签: javascript c# asp.net ajax

我从iFrame中调用它!我认为这将是主要问题。

我正在尝试使用ajax请求在ASP中调用WebMethod。但我没有得到理想的反应。这是我的页面的代码。 我称之为

Ext.Ajax.request({url:  'Default.aspx/DispatchMethod'});

问题是我在响应中得到html而不是字符串“TEST”。知道为什么吗?

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [WebMethod]
    public static String DispatchMethod() 
    {
        return "TEST";
    }
}

使用WebService(.asmx扩展名)后,我得到一个

This web service is using http://tempuri.org/ as its default namespace.

建议:在公开XML Web服务之前更改默认命名空间。

每个XML Web服务都需要一个唯一的命名空间,以便客户端应用程序将其与Web上的其他服务区分开来。 http://tempuri.org/可用于正在开发的XML Web服务,但已发布的XML Web服务应使用更永久的命名空间。

您的XML Web服务应由您控制的命名空间标识。例如,您可以将公司的Internet域名用作命名空间的一部分。虽然许多XML Web服务命名空间看起来像URL,但它们不需要指向Web上的实际资源。 (XML Web服务名称空间是URI。)

对于使用ASP.NET创建的XML Web服务,可以使用WebService属性的Namespace属性更改默认命名空间。 WebService属性是应用于包含XML Web服务方法的类的属性。下面是一个将命名空间设置为“http://microsoft.com/webservices/”的代码示例:

C#

3 个答案:

答案 0 :(得分:1)

我不确定你的代码结构是否用于Q的目的,如果没有,那么你可能需要从解耦开始,并专注于你的AJAX请求中“ContentType”的关键元素。

首先将.asmx(这也是[WebMethod]所指的)文件添加到您的解决方案中。

然后添加方法:

        $.ajax
         ({
             type: "POST",
             contentType: "application/json; charset=utf-8",
             url: "/webservice-folder/webservice.asmx/HelloWorld",
             success: (function (data) {
                 alert(data.d)
             }),
             error: (function () {
                 alert("error");
             })
         });

现在假设您使用外部js表,请应用以下逻辑(Onload或OnClick):

{{1}}

答案 1 :(得分:1)

好的,让我们清楚一点。您正在使用页面方法,而不是XML Web服务,并且您真的不想仅仅为了公开客户端脚本的端点而使用asmx服务。

您的页面方法语法看起来很好。您的问题可能与您提供的选项有关(很可能是因为内容类型未设置为application / json)。

你提到你得到了HTML。那么,什么样的HTML?它可能是一个错误页面吗?

答案 2 :(得分:0)

我认为你需要的网址是:“DispatchMethod”

可能是错的。

您可能还需要更多字段,例如:

$.ajax({
            dataType: "json",
            url: "DispatchMethod",
            data: {
                "customerNo": customerNo,
                "productNo": productNo
            },