2011-09-23 62 views
3

我有以下代码。 jquery Ajax调用webmethod。如果我通过邮编“07306”,它会返回并将会话设置为“7306”。不知道为什么它从前面消除零!Jquery AJAX与WebMethod从前面删除零

function onChangeLocation(){ 
     var newzip =$('#<%= txtNewLocation.ClientID %>').val(); 
     $('#<%= lblDefaultLocation.ClientID %>').html(newzip); 
      $.ajax({ 
      type: "POST", 
      url: "/WebMethods.aspx/ChangeLocation", 
      data: "{newLocation:" + newzip + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
      alert(msg.d); 
      } 
      }); 
     } 


    [System.Web.Services.WebMethod()] 
      public static String ChangeLocation(String newLocation) 
      { 

       HttpContext.Current.Session["ClientZipCode"] = newLocation.ToString(); 
       return newLocation.ToString(); 
      } 

有人可以请解释为什么它从前面删除零?

+0

你为什么试图构建一个JSON字符串并将其传递给数据?只需传递一个对象并强制它成为一个字符串,例如'data:{newLocation:newzip +''}'。 –

+0

使用firebug或chrome DEV工具来查看实际上发送到服务器的内容;如果它发送'07306',那么问题出在服务器端,我对ASP.NET没有线索,但至少你会知道问题出在哪里。 –

+1

@El Yobo它不是服务器端的问题。 “{newLocation:'”+ newzip +“'}”解决了问题。 –

回答

1

的问题是,JS认为它的整数改变

$('#<%= lblDefaultLocation.ClientID %>').html(newzip); 

$('#<%= lblDefaultLocation.ClientID %>').html(newzip + ''); 

应该修复它。

+1

它不会改变任何东西; 'newzip'值在发布到服务器时按原样使用,不再从DOM中检索。基本问题是正确的;在某处被视为一个整数,所以删除前导零。 –

+4

好点你尝试过'“{newLocation:'”+ newzip +“'}”'? – Korich

+0

这最后的评论工作。 –