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

好的,所以到目前为止我的网站一直在正常工作,我不确定我改变了什么。 我有一个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] public static int get_promocode(string promo, int uid) { return DAC.GetPromoCode(promo); } 

Web方法永远不会被调用,但是Page_load事件会触发并运行一切,然后它会收到500错误,因为它不应该被调用,并且没有它需要的所有数据。

编辑:

我使用Web方法的所有其他页面都可以正常工作。 这只是这个页面。

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

我找到了我的问题的答案:

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

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

    

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

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