2012-03-26 37 views
3

好吧,所以我的网站一直在正常工作到现在,我不确定我改变了什么。我有一个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); 
} 

将WebMethod不会被调用,但Page_load事件触发并遍历所有内容,然后得到500错误,因为它不应该被调用并没有它需要的所有数据。

编辑:

所有我使用网络方法的其他网页正常工作。这只是这个页面。

另一个奇怪的行为:一旦我开始键入“register.aspx”,chrome就会调用Page_load。我所有的其他页面都很好,这种情况不会发生。

+1

你确定这个js代码被调用,你没有做一个完整的回发未被注意到吗? (例如,由于按钮点击) – 2012-03-26 01:44:16

+0

@ClaudioRedi我很确定,我用调用AJAX函数的处理程序更新了我的答案。返回的500错误通过AJAX调用中的错误变量返回。该页面不会更改。 – 2012-03-26 01:51:57

+0

在进行邮政通话之前,请检查pcode和hid变量的含义 – 2012-03-26 02:02:49

回答

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

.net 3.5 **是** .Net 2.0。有3个额外的附加组件。5,但它是相同的核心运行时。 – 2012-03-26 02:31:36

+0

Ahh righty ho。感谢那。 – 2012-03-26 02:33:07

1

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

+0

我没有脚本管理器,我没有使用任何形式的ASP.Net AJAX。只要ASP.Net与jQuery。我所有的其他页面和他们的Web方法都可以工作 – 2012-03-26 01:36:02