0

わかりました、これは以前に尋ねられたことを知っています(私はそれを自分で見たので)、私を除く他のすべての人にうまくいくようです. 私はそれを使用しないようにしているので、デバッグするのは悪夢です。しかし、ここに私の問題があります。ギャラリーに画像を追加するために ajax で作業しているスクリプトがあります。画像は、データベース内の別のテーブルを参照する単なる ID であり、ギャラリーでも同じです。たった二つのID。とにかく、リンクをクリックすると、このスクリプトを実行してデータベースに追加するようにします。しかし、それは機能していません。もちろん、JavaScript は失敗した場所を知らせるのが苦手です。スクリプトのコードは次のとおりです。

function addToGallery(img)
{

 var e = document.getElementById("galleries2");
 var gal = e.options(e.selectedIndex).value;
 window.alert("Gallery Id: "+gal+" Image Id: "+img);

       if (img=="")
       {
          document.getElementById("txtHint").innerHTML="";
          return;
       } 
       if (window.XMLHttpRequest)
       {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
       }
       else
       {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
       }
          xmlhttp.onreadystatechange=function()
       {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
       {
          document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
       }
    }
       xmlhttp.open("GET","addtogallery.php?img="+img+"gal="+gal,true);
       xmlhttp.send();
    }

わかりましたので、上記は機能しません。アラート メッセージを追加して、できる限りトラブルシューティングを試みました。変数の上にアラート ボックスを配置し、img 変数を参照するように要求するだけで機能します。今、それを下に置いて、そこで行ったことを実行しようとすると、停止します。メッセージボックスもajaxも何もありません。だから、私はそれが何かと関係があるに違いない

var gal = e.options(e.selectedIndex).value;

私も () の代わりに [] を使って試してみましたが、そこにも何もありません...助けていただければ幸いです。

更新 わかりましたので、select の問題を解決しました。今度は、xhtmlrequest.open メソッドで値を渡そうとしています。1 つの get 値を渡すことはできますが、2 つを渡すことはできません。これが問題のコード行です

xmlhttp.open("GET","addtogallery.php?image="+img+"&gid="+gal,true);

これで、img と gal が設定されていることがわかりました。これは、このスクリプトが実行されるたびに警告ボックスが表示され、それらが設定されていることが通知されるからです。しかし、php ページに到達すると、img 変数のみが出力され、gal 変数はまだ設定されていません。以前にこの問題を抱えている人はいますか?

4

3 に答える 3

1

角かっこは間違いなく必要ですが、変数「e」を「el」などに変更してみてください。私が理解しているように、この関数はクリックに応答するため、イベント用に予約されている可能性があります。

試す:

var galleries = document.getElementById("galleries2");
var gal = galleries.options[galleries.selectedIndex].value;
于 2012-09-22T17:05:31.317 に答える
0

私はあなたがしたいことは次のとおりだと思います:

var gal = e.options[e.selectedIndex].value;

お役に立てれば。

于 2012-09-22T17:00:37.750 に答える
0

括弧の代わりに角かっこが必要です。

 var gal = e.options[e.selectedIndex].value;

JavaScript環境では、「HTMLOptionsCollectionは関数ではありません」のような素敵なTypeErrorが表示されるはずです。

于 2012-09-22T17:02:13.190 に答える