0

我刚刚开始使用 Page Methods 和 jQuery 并没有太大的成功。

下面是我的示例代码...

默认.aspx.cs

[WebMethod]
public static string test()
{
     return "testing 123";
}

测试.js

$(document).ready(function()
{
    $("#Result").click(function()
    {
        $.ajax({
            type: "POST",
            url: "Default.aspx/test",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg)
            {
                alert(msg);
            }
        });
    });
});

如果我在'return'testing 123'处设置断点;' 它永远不会被击中,当我尝试执行http://localhost/default.aspx/test时,我会将整个页面发回,与 jQuery 函数相同。

我也尝试过使用 scriptmanager 和 MS AJAX PageMethods.test(); 具有相同的确切结果。

4

7 回答 7

2

我想通了,它与 JQuery 或 PageMethods 无关……我有一个 URL 重写器,它可以拦截、重定向和杀死任何发布的内容。

感谢大家的帮助!-鹅

于 2009-09-05T01:54:05.567 回答
1

刚刚尝试使用单独的文件进行操作,一切正常。

您的页面上有“脚本管理器”吗?尝试删除它。没有它,Pagemethods/jQuery ajax 可以完美运行。

于 2009-09-04T20:31:13.160 回答
0

我正在使用这里详述的技术。

我设置了我的数据:

var contactData = "{'name':'" + txtName.val() + "',
                    'company':'" + txtCompany.val() + "',
                    'email':'" + txtEmail.val() + "'}";

定义我的成功方法:

function success(result)
{
   alert(result.d);
}

然后打电话

`$.pageMethod("ContactUs/SendContactUsEmail", contactData, success);`

乔布斯是个好人。

于 2009-09-05T00:03:50.580 回答
0

我不确定这是否是您的问题,但请尝试将您的类型从 POST 更改为 GET。如果您要在浏览器中访问http://localhost/default.aspx/test并且它正在工作,那么您知道它正在为 GET 操作工作,因为这就是您的浏览器正在做的事情。

于 2009-09-04T18:32:03.960 回答
0

这里有一些很好的信息。也在这里

另外,我不知道这是否重要,但请尝试制作一个实际的 Web 服务页面并将该方法放入其中,即带有 .asmx 扩​​展名的方法。

于 2009-09-04T18:36:45.700 回答
0

首先,您必须检查您的目标元素(#result)是否没有使用 UpdatePanels 刷新,否则您可以使用这样的实时功能:

$("#Result").live("click", function() { 
  ...
});

那么,您的 jquery 代码是否与 Page Method 位于同一页面内?

于 2009-09-04T18:51:23.827 回答
0

当您将 PageMethods 与 URL 路由结合使用时,也会出现此问题。您可以通过手动设置 url(在 javascript 中)来解决它:

PageMethods.set_path('/pagename.aspx'); 
于 2011-12-19T08:29:34.740 回答