1

我发誓这曾经有效。我正在尝试做面包屑。我在名为“breadcrumb”的全局命名空间中有一个 JS 函数。它接受一个字符串作为其唯一参数:

function breadcrumb(attr) {
  hash = { type: "POST", url: "brands/get_attributes", data: $("#attributeform").serialize() };
  $.ajax(hash);
  return false;
}

我在 HTML 页面上有我的面包屑链接,定义如下:

<a href="javascript:breadcrumb(\'<%= brand_attribute.attributename %>\');"><%= value %></a>

到目前为止还好。但是当我点击面包屑链接时,我会在 URL 中得到这个:

javascript:breadcrumb('Whirlpool');

还有一个带有“false”字样的空白页,这就是函数返回的内容。我的问题是,为什么它实际上导航到 javascript 函数本身?为什么没有呈现 Ajax 结果?

4

3 回答 3

1

更改hrefonclick

<a href="#" onclick="return breadcrumb(\'<%= brand_attribute.attributename %>\');"><%= value %></a>
于 2012-11-14T15:44:51.537 回答
1

使用 onclick 而不是 href。此外,我的强迫症建议进行以下语法更改:

var hash = { //use braces to define an object
               type: "POST", 
               url: "brands/get_attributes", 
               data: $("#attributeform").serialize()
};
于 2012-11-14T16:15:22.430 回答
0

这是因为您的 <a> 标签的 href 不包含 void(0); 最后声明,所以你的面包屑函数的值被返回给浏览器。

尝试改变:

href="javascript:breadcrumb(\'<%= brand_attribute.attributename %>\');"

到:

href="javascript:breadcrumb(\'<%= brand_attribute.attributename %>\');void(0);"

编辑:我也同意 jakubka 的回答,将 javascript 调用保留在链接的 onclick 属性中而不是 href 会是更好的做法。

所以,

href="#" onclick="breadcrumb(\'<%= brand_attribute.attributename %>\');"
于 2012-11-14T15:44:15.340 回答