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;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top