2012-02-16 100 views
1

我想在Ajax调用的数据中使用.Net服务器变量和用户。jquery/.net在Ajax调用数据中传递服务器变量

$.ajax({ 
    url: "get_user_info.aspx", 
    data: "user_id=<%=UserID%>" 
}); 

但是,我得到一个对象与上述错误的错误。

UserID是C#代码隐藏中的一个int。

我已经尝试过了强制转换为字符串,像这样:

var useridstring = <%=UserID%>; 
var mynewstring = useridstring.toString(); 

$.ajax({ 
     url: "get_user_info.aspx", 
     data: {user_id:mynewstring} 
    }); 

它不工作,虽然。我在这里阅读了关于在变量中使用隐藏输入的帖子,但是我希望避免使用上述方法的方法。

+1

在第二种情况下:1. useridstring *和*的值是多少?2.它以什么方式“不工作”? – Richard 2012-02-16 15:56:42

回答

3

你的字段名(USER_ID)必须是一个字符串:

var useridstring = '<%=UserID%>'; 


$.ajax({ 
     url: "get_user_info.aspx", 
     data: {'user_id':useridstring} 
    }); 
+1

从技术上讲,字段名称不一定是字符串,除非你做了一些奇怪的事情(比如传递一个数组)。但是你的代码确实解决了这个问题,因为第一行 - 没有<%=UserID%>左右的引号,javascript会尝试评估用户ID作为变量而不是字符串。 – Dave 2012-02-16 16:06:01

+0

嗯...仍然没有工作。我仍然得到一个Javascript错误对象预期任何时候我在<%=UserID%>任何地方。如果我拿出来,它工作正常。我把它放进去,JS的更下方就吓倒了。我正在使用.Net 2.0框架与ViewState。那里可能会有冲突吗? – User970008 2012-02-16 17:06:23

+0

你可以请张贴你的HTML(不是你的.net源码):jsfiddle.net – 2012-02-16 17:09:09

0

我将变量放置一个隐藏的DIV中,并从jQuery的得到这个div的内部文本。

var useridstring = $get('myDiv'); 

<div id='myDiv' style="display:none;><%:UserID%></div> 
+0

是的,Diodeus给出了正确的答案,实际上我的解决方案并没有帮助解决问题... – enricoariel 2012-02-16 16:07:46