0

好的,我知道以前有人问过这个问题(因为我自己也看过),它似乎适用于除我之外的其他所有人。我对 javascript 非常陌生,因为我尽量不使用它,因为它是调试的噩梦。但是,这是我的问题。我有一个脚本,我正在为 ajax 将图像添加到画廊。该图像只是一个引用数据库中另一个表的 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();
    }

好的,所以上面的不起作用。我添加了警报消息以尝试尽可能多地进行故障排除。如果我将警报框放在 var 上方,并且只要求它引用 img 变量,它就可以工作。现在,如果我把它放在下面并尝试做我在那里做的事情,它就会停止。没有消息框,没有 ajax,什么都没有。所以,我打赌它与

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

我也用 [] 而不是 () 尝试过它,也没有任何东西......任何帮助将不胜感激。

更新 好的,所以我已经解决了选择问题,现在我尝试使用 xhtmlrequest.open 方法传递值。我似乎可以通过 1 获取价值,但不能通过 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 环境应该给你一个不错的TypeError,比如“HTMLOptionsCollection 不是一个函数”

于 2012-09-22T17:02:13.190 回答