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

href ではなく onclick を使用します。また、私の OCD は、次の構文変更を提案しています。

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

hrefに変更onclick:

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

これは、 <a> タグの href に void(0); が含まれていないためです。これにより、ブレッドクラム関数の値がブラウザーに返されます。

変更してみてください:

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

に:

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

編集: jakubka の回答にも同意します。href ではなく、リンクの onclick 属性に javascript 呼び出しを保持することをお勧めします。

そう、

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