触发页面加载而不是Web方法

时间:2012-03-26 01:20:14

标签: jquery asp.net webmethod

好的,所以到目前为止我的网站一直在正常工作,我不确定我改变了什么。我有一个jQuery AJAX调用,它将优惠券代码发送到服务器,并检索一个数字(这是折扣)。

Webmethod不再被解雇,而是正在触发webmethod所在页面的Page_load。为什么?我能检查什么?我该怎么办?

这是我点击按钮时的处理程序

$('div#code_apply_btn').click(function() {
    $(this).html('PLEASE WAIT');
    getpromocode();
});

这是AJAX调用

function getpromocode(){
    var pcode = $('input#input_circuitcode').val();
    var hid = parseInt($('input#ss_id_h').val());
    $.ajax({
        type: "POST",
        url: "register.aspx/get_promocode",
        data: '{"promo":"' + pcode + '", "uid":' + hid + '}',
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (msg) {
            if (msg.d != -1) {
                applydiscount(msg.d);
                $('div#reg_circuit').show();
                $('div#circuit_promo').hide();
                $('div#reg_circuit').click();
            }
            else {
                $('input#input_circuitcode').val('');
                $('div#code_apply_btn').html('APPLY CODE');
            }
        },
        error: function (msg) {
            alert(msg);
        }
    });
}

这是webmethod

[WebMethod]
public static int get_promocode(string promo, int uid)
{
    return DAC.GetPromoCode(promo);
}

从不调用web方法,但是Page_load事件会触发并遍历所有内容,然后它会收到500错误,因为它不应该被调用,并且没有它需要的所有数据。

编辑:

使用网络方法的所有其他网页都可以正常使用。这只是这个页面。

另一个奇怪的行为:在我开始输入“register.aspx”时,在chrome中,调用Page_load。我的所有其他页面都很好,这不会发生。

2 个答案:

答案 0 :(得分:5)

我找到了问题的答案:

因为我有VS2008,所以我只能使用.Net 3.5。然而我的服务器有.Net 4.0或2.0无论出于什么原因我无法选择3.5,因为我希望如此。所以每次我移动我的项目时我都要更改web.config,因为默认的3.5配置充满了4.0不喜欢的东西。

所以我记得我已经把web.config清空到仍然在3.5中运行的准系统版本,这就是问题所在。我把它缩小到这些我从3.5本地运行的版本中排除的行。

<httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, 
        System.Web.Extensions, Version=3.5.0.0, Culture=neutral, 
        PublicKeyToken=31BF3856AD364E35"/>
</httpModules>

我想脚本模块是将jQuery请求传递给Web方法而不是默认页面处理程序的方法。你去..但没有明显的错误或任何东西,它只是没有用。

答案 1 :(得分:1)

您必须在该页面上的ScriptManager中使用EnablePageMethods =“true”。