我从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#
答案 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
},