呼叫使用jQuery ASP.NET PageMethod的/的WebMethod - 返回整个页面
-
06-09-2019 - |
题
jQuery的1.3.2,ASP.NET 2.0。制作一个AJAX调用一个PageMethod的(的WebMethod)返回完整/整页,而不是只是响应。页面方法断点显示它从来没有击中。我在我的方法[WebMethod]属性,并且它的是公共静态,返回字符串和不接受PARAMS。我甚至尝试添加[ScriptService]在我班上的第一名,看它是否帮助,但事实并非如此。
我已经看到了这个帖子 jQuery的AJAX与ASP.NET的WebMethod返回其中有我相同的症状整页,但我仍然有一个问题。我读了的http:// encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/ 我觉得我这之后的T,但仍没有运气。
jQuery的呼叫我正在是:
jQuery.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: '{}',
dataType: 'json',
url: 'MyPage.aspx/SomePageMethod',
success: function(result){
alert(result);
}
});
在请求/响应标头,按照在FF3萤火虫,如下
Response Headers
Server ASP.NET Development Server/8.0.0.0
Date Tue, 24 Feb 2009 18:58:27 GMT
X-AspNet-Version 2.0.50727
Cache-Control private
Content-Type text/html; charset=utf-8
Content-Length 108558
Connection Close
Request Headers
Host localhost:2624
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6
Accept application/json, text/javascript, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type application/json; charset=utf-8
X-Requested-With XMLHttpRequest
Referer http://localhost:2624/MyApp/MyPage.aspx
Content-Length 2
Cookie ASP.NET_SessionId=g1idhx55b5awyi55fvorj055;
我添加了一个ScriptManager到我的网页只是踢,看它是否帮助,但没有运气。
任何建议?
解决方案
你知道该网页的方法是否工作正常?如果您使用的的ScriptManager做他们的工作?
这听起来像你可能会丢失一个web.config条目 。具体地,部分的HttpModules
其他提示
我缺少一条线从我的web.config:
<system.web>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>
我今天再次遇到这个问题出于不同的原因:我曾在拼写错误的“应用程序”
contentType: 'application/json'
和是越来越全寻呼响应而不是到的WebMethod的呼叫。
如果你已经尝试一切,仍然可以从您的PageMethod的返回的整个页面,你可能想确保你没有使用友好的URL。 如果您使用的是他们,这一招可以帮助你。
添加此行的js脚本您拨打电话前:
PageMethods.set_path(PageMethods.get_path() + '.aspx');
投掷此在这里作为一个方面说明。我得到这个错误是由于我的字符串变量在我的HTML字符串的长度和我用来获取打电话给我的AJAX网站这个样子。
loc = (loc.substr(loc.length - 1, 1) == "/") ? loc + "Default.aspx" : loc;
$.ajax({
type: "POST",
url: loc + "/" + methodName,
data: "{" + args + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: onSuccess,
error: onFail
});
这是不能够正确地提取在.aspx链接的,所以我只是硬编码我的网页,而不是使用禄变种。
我见过真的应该调用Web服务或单独的脚本处理程序,而不是一个页面大多数AJAX方案。这是非常容易的在.NET 3-5的事,不是那么容易在2-0。你找出即使后(如果)如何不加载整个页面,这里有原因不调用页面方法:
1)页方法可能不是一个完整的页面加载负荷少的东西,但仍远远超过你需要一个简单的Ajax调用。 2)的职责的无中等分离。该页面可能是负责铺设很好的东西了,不是你正在使用的AJAX方法的逻辑。结果 3)也许你需要一些会话状态,但应该仍然可用。
目前,我正在更新我对这个问题的知识......我会找一个好的答案,这个问题在这个线程,或者一个我下周会发布。这里是我前进的方向
1)从服务器发送JSON到客户端,并使用JavaScript来更新页面。 - 各种框架,可以很容易地从Web服务器产生的JSON结果。 2)jQuery让,而不是痛苦的Ajax调用,JSON处理和客户端格式化乐趣。
在近两个小时,不得不想尽一切后,我终于解决了这个问题。@马文Zumbado的评论帮助了我。我是缺少在.aspx从我url.I知道这是不是我作为一个程序员的最佳时刻!
注释在RouteConfig.cs以下行适用于我
settings.AutoRedirectMode = RedirectMode.Permanent;