2012-02-15 7 views
0

が機能していません。 jsファイルに接続されたインデックスページ。このjsファイルには、データベースからデータを取得するajaxコードが含まれています。 これは私のjsが

$(document).ready(function() { 

    // getting links from db andshow sub_menu div // 
    $(".menu_item").mouseover(function(){ 
     $(this).addClass("selected").children().slideDown(500,function(){ 
      var id = $(".selected").attr("id"); 
      var ajax= false; 
      ajax = new XMLHttpRequest(); 
      var qst = "?id="+id; 
      ajax.open("GET","ajax/get_sub_cats.php"+qst); 
      ajax.onreadystatechange = function(){ 
       if(ajax.readyState == 4 && ajax.status == 200){ 
        $(".sub_menu[title="+id+"]").html(ajax.responseText); 
       } 
      } 
      ajax.send(null); 
     }); 
    }); 

    // hiding sub_menu div // 
    $(".menu_item").mouseout(function(){ 
     $(this).removeClass("selected").children(".sub_menu").slideUp(500); 
    }); 

    // keeping sub_menu div visible on mouse over // 
    $(".sub_menu").mouseover(function() { 
     $(this).stop(); 
    }); 

    // clicking sub menu link in the menu // 
    $(document).delegate("a#subCatLink","click",function(){ 
    alert("test"); 
    }); 
    // document ready end 
    }); 

ファイルであり、これは、すべての

+2

:しかし...

は、なぜこのようなものを使用しないでください。画像も不明です。あなたがJSをインクルードするためにAjaxを行うことを含めているように思えます。 HTMLレンダリング部分にエンドツーエンドのPHPを使用するだけではどうですか?あなたはそれが、この省略コードサンプルから言うのは難しいのですが、クラスとしてID( '#のsubCatLink')を使用しようとしているよう最後に、それが見えます。複数のアンカーに '#subCatLink'がある場合は、ページごとにIDのインスタンスが1つしかないので、間違っています。 –

+0

私はあなたの問題の説明に何かが欠けていると思う。それが必要としてあなたのフィドルは、上記のクリックイベントマネージャが含まれていません。 @Greg Pettitが言ったことに+1する。 –

+0

iはjsfiddleコードは、それが問題だ場合、あなたが言うことができるように、目に見えるsub_menuを保つために.stopを()が表示されますか...あなたは '$アヤックス()'メソッドを使用する必要がありませんあなたは既にjQueryのを使用している –

答えて

1

残念ですが、おそらくこれが役立つかもしれません。

jQueryの

$(".menu_item").mouseover(function(){ 
    var id = $(".selected").attr("id"); 
    var qst = "?id="+id; 
    var html = ''; 
    $.getJSON('ajax/get_sub_cats.php'+qst, function(data){ 
     var len = data.length; 
     for (var i = 0; i< len; i++) { 
      html += '<a id="subCatLink'+data[i].Sub_Cat_ID+'" href="products.php?id='+data[i].Sub_Cat_ID+'">'+data[i].Sub_Cat_Name+'</a>'; 
     } 
     $(".sub_menu[id="+id+"]").html(html); 
    }); 
}); 

PHP私はアヤックスが表示されない

require('../_req/base.php'); 
$return = array(); 

$id = $_REQUEST['id']; 
$sql = "select * from sub_cats where Main_Cat_ID = '$id'"; 
$result = mysql_query($sql); 

while($ln = mysql_fetch_array($result)){ 
    $return[] = $ln; 
} 

echo json_encode($return); 
+0

PS:私はあなたの 'タグID'にIDを入れます。同じidを持つ複数の要素 –

-1
で動作していないAJAXを使用して他のPHPファイルからデシベル

<?php 
require('../_req/base.php'); 
$id = $_REQUEST['id']; 
$getSubcatsQ = "select * from sub_cats where Main_Cat_ID = '$id'"; 
$getSubcatsR = mysql_query($getSubcatsQ); 
$numrows = mysql_num_rows($getSubcatsR); 
while($row = mysql_fetch_array($getSubcatsR)){ 
    ?> 
    <a id="subCatLink" href="products.php?id=<?php echo $row['Sub_Cat_ID']; ?>"><?php echo $row['Sub_Cat_Name']; ?></a><br /> 
    <?php 
} 
mysql_close($connect); 
?> 

クリックリンクからのリンクを取得するために使用get_sub_cats PHPファイルであります

OK、テストとして、時間を示すべきである。この

$(document).delegate("click","a",function(){ 
    var target = $(this).attr("href"); 
    alert(target); 
}); 

してみてくださいあなたのページのすべてのリンクのためのef。それがうまくいく場合は、表示するすべてのリンクをdivに入れてください。それでは

$('#divID').delegate("click","a",function(){ 
    var target = $(this).attr("href"); 
    alert(target); 
}) 
+3

「中断されました」とはどういう意味ですか?それだけで1.7以上でありますので、あなたはそれがヤセルに利用できないことを正しいかもしれない...しかし、それは削除されているようにそれが聞こえる「一時停止します」。 –

+0

母あなたは、私は完全にそれは長い1日だったapi.jQuery.comにあったものをかなり右欠場-読んだ: - .delegateで作業していない、まだ愚か – smitchelluk

+0

回答と私は推測します「私はjQueryのウェブサイト上で見つかりましたが、まだ – smitchelluk

関連する問題