将数据传递给服务器端的jQuery函数

时间:2010-01-26 21:24:00

标签: javascript jquery asp.net-mvc

鉴于我有:

$("a.clickable").livequery('click', (function (e) {
         var values = $(this).attr('id').split('_');
         $('#' + values[3]).load($(this).attr('href'));
         e.preventDefault();
     }));

你看,我希望所有与“clickable”类相关的链接都能导致ajax加载。然而,目标div会有所不同,所以我只需将其与其他一些数据一起放入Id的链接中: “link_value1_value2_targetDivId”。

所以我现在拆分id以获取要使用的值数组。 我知道*$(obj).data()*,但我需要在服务器端传递一些东西。

有没有办法实现这个没有这个丑陋的id-string解析? ASP.Net/MVC btw。

2 个答案:

答案 0 :(得分:0)

不,你不能那样做。所有触发AJAX调用都必须从客户端完成,尽管有些方法可以使用反向AJAX或彗星从服务器将一些数据推送到客户端,但这不是你想要的。对于你的情况,你必须做那个丑陋的逻辑。但是如果你不想解析它,你可以将id作为数据/自定义属性存储在元素本身中,并使用它而不是解析。

答案 1 :(得分:0)

我希望我理解这个问题 - 有几个,每个都与它的div有关。单击后,相关的div被操纵。

我该怎么做。在服务器端(在aspx文件中)我会生成如下的javascript代码:

var mapAIdToDivId = new Array();
<% foreach(Item i in MyDivAndACollection) { %>
  mapAIdToDivId['<%= i.AId %>'] = <%= i.DivId %>;
<% } %>

然后js处理程序将是

$("a.clickable").livequery('click', (function (e) {
   $('#' + mapAIdToDivId[$(this).attr('id')]).load($(this).attr('href'));
   e.preventDefault();
}));