页面方法问题

时间:2011-06-01 18:42:41

标签: c# asp.net

我正在构建一个使用jquery的页面方法调用的asp.net页面。这是一个简单的测试页面,但我无法让它工作,我看不出原因。

我在aspx中添加了一个脚本管理器。这是javascript函数:

<script type="text/javascript">

    function CallGetLoaded() {

        var ConfirmLoad = "test string";

        $.ajax({
            type: "POST",
            url: "../Pages/TestPage.aspx/GetLoaded",
            data: ConfirmLoad,
            contentType: "application/text; charset=utf-8",
            dataType: "text",
            success: successLoadLeads,
            error: errorLoadLeads
        });

    };

    function successLoadLeads(thereturn) { alert((thereturn)); };
    function errorLoadLeads() { alert("problem getting return"); };

</script>

这里有完整的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;
using System.Web.Services;

public partial class Pages_TestPage : System.Web.UI.Page
{

    [WebMethod]
    public static string GetLoaded(string ConfirmLoad)
    {

        string ResultString = "got test";

        return ResultString;
    }
}

我不是在警告弹出窗口中找回一个简单的字符串,而是有时会返回整个页面的HTML,有时还会返回错误函数;不知道为什么会有所不同。 我错过了什么?

感谢您的建议。

2 个答案:

答案 0 :(得分:1)

我对您的代码做了一些小改动。

  1. 更改了contentType请求的datadataType$.ajax
  2. 更改了onsuccess处理程序以检查.hasOwnProperty("d")
  3. 更改了您的onerror处理程序,以便您可以看到实际错误。
  4. 我坚信您使用text进行解析和检索时出现了解析错误。

    以下是从您的代码中完成的示例。

    MarkUp

    <asp:Button ID="testclick" runat="server" Text="Click Me"/>
    

    脚本

    $(function () {
        $('#testclick').click(function (e) {
            CallGetLoaded();
            e.preventDefault();
        });
    });
    
    function CallGetLoaded() {
    
        var ConfirmLoad = "test string";
    
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "TestPage.aspx/Getloaded",
            data: "{'ConfirmLoad':'" + ConfirmLoad + "'}",
            dataType: "json",
            success: function (msg) {
                var data = msg.hasOwnProperty("d") ? msg.d : msg;
                OnSucessCallBack(data);
            },
            error: function (xhr, status, error) {
                alert(xhr.statusText);
            }
        });
    
    };
    
    function OnSucessCallBack(data) {
        alert(data);
    }
    

    守则背后

    [WebMethod]
    public static string GetLoaded(string ConfirmLoad)
    {
        string ResultString = "got test";
        return ResultString;
    }
    

    P.S:正如FiveTools正确指出的那样,

    url:"../Pages/TestPage.aspx/Getloaded" 是不必要的。 url:"TestPage.aspx/Getloaded"会这样做。

答案 1 :(得分:0)

尝试网址:“TestPage.aspx / GetLoaded”,