使用<a> tag, and retrieving a value that was submitted</a>在ajax中传递多个值

时间:2012-02-16 21:31:10

标签: php javascript ajax

这是一个非常简单的功能,如果使用输入标签,遗憾的是我必须使用链接标签,因为我正在使用字母分组来检索不同页面上的值。

这是我找到的链接标记代码,用于保存要提交给ajax的值

echo '<a onclick="passPagination(\'3\');passLetter(\'S\')">NEXT</a>';

我想从另一页打电话给所有字母“s”页面“3”。

        function passLetter(str)
    {
    if (str=="")
      {
      document.getElementById("retail_group").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("retail_group").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","otherpage.php?letter="+str,true);
    xmlhttp.send();
    }

    function passPagination(str)
    {
    if (str=="")
      {
      document.getElementById("retail_group").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("retail_group").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","otherpage.php?pageno="+str,true);
    xmlhttp.send();
    }

我还想再次调用传递给其他页面的信件,以便我将其作为我的分页链接的参考,这也是此页面中的保留链接。      echo'NEXT';

我真的迷失在这里,因为我不熟悉链接标记和ajax一起工作,同样你可能已经注意到我从ajax ajax代码判断ajax也不是很好。

非常感谢您的帮助,谢谢。

我是ajax的新人。 :)

3 个答案:

答案 0 :(得分:2)

解决方案是创建一个具有多个参数的函数:

function passPaginationAndLetter(page, letter)
{
if (page=="" || letter == "")
  {
  document.getElementById("retail_group").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("retail_group").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","otherpage.php?letter="+letter+"&pageno="+page,true);
xmlhttp.send();
}

现在可以用

调用它

echo '<a onclick="passPaginationAndLetter(\'3\',\'S\')">NEXT</a>';

区别在于你没有调用两个AJAX方法,只有一个。

答案 1 :(得分:0)

我不确定我是否明白你的意思,但我想你想要那样的东西

echo '<a onclick="get(\'S\', '. ($_GET['page'] + 1) .')">NEXT</a>';

function get(letter, page) {
    if (!letter) {
      document.getElementById("retail_group").innerHTML="";
      return;
    }

    if (!page) {
       page = 1;
    }

    if (window.XMLHttpRequest) {
      xmlhttp = new XMLHttpRequest();
    } else {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function() {
      if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        document.getElementById("retail_group").innerHTML=xmlhttp.responseText;
      }
    }

    xmlhttp.open("GET","otherpage.php?letter=" + letter + "&pageno=" + page,true);
    xmlhttp.send();
}

如果确实如此,请不要忘记在使用之前验证从$ _GET获得的变量,我只是没有,因为它不是重点......

答案 2 :(得分:0)

我认为这就是你要找的东西:

<强> HTML

<a href="#" id="previous" onclick="previous(); return false;">PREVIOUS</a><a href="#" id="next" onclick="next(); return false;">NEXT</a>

<强>的javascript

var current = {
    page: 0,
    letter: a
};

function ajax(url) {
    var xmlhttp = window.XMLHttpRequest || new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.onreadystatechange = function(xmlhttp) {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementByI("retail_group").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}

function next() {
    ajax("otherpage.php?letter=" + current.letter + "&pageno=" + (++current.page));
}

function previous() {
    ajax("otherpage.php?letter=" + current.letter + "&pageno=" + (--current.page));
}

此代码当然不完整,它不会检查页面的最大/最小值,也无法替换字母,但它应该指向正确的方向。