javascript如何将两个值传递给php ajax

时间:2014-01-14 04:13:55

标签: javascript php ajax

我得到以下代码在php ajax页面中获取排序数字。现在我想从两个按钮发送单个值。这是我的JavaScript代码

 function showUser(str)
 {
  if (str==""){
   document.getElementById("txtHint").innerHTML="";
   return;
  }

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

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

  xmlhttp.open("GET","productlistajax.php?q="+str,true);
   xmlhttp.send();
  }

现在排序dorpdown菜单

 <select id="maxDaysSinceAdded" name="shorting" onchange="showUser(this.value)">
   <option selected='selected' value="1">Most Recent</option>
   <option value="2">Lowest Price</option>
   <option value="3">Highst Price</option>
 </select>

这里有两个按钮,我想发送单个值以及上面的排序ID。

<button type="button" name="buttonpassvalue" value="-1"    onclick="showUser(this.value)"><< Previous</button> 
<button type="button" name="buttonpassvalue" value="1" onclick="showUser(this.value)">Next >> </button>

注:

请注意,当我按下一个时,它应该从之前的总数中加1,如果我按下之前那么它将从总数减少1。

如果可能的话,在达到-1时禁用上一个按钮。

感谢最好的问候,

3 个答案:

答案 0 :(得分:0)

简单,

将sort select [maxDaysSinceAdded]的值存储到局部变量中并将其传递给ajax调用。

在ajax请求中,您需要再添加一个由'&amp;'分隔的变量。

 var sortVal = document.getElementById("maxDaysSinceAdded").value();

 xmlhttp.open("GET","productlistajax.php?q="+str+"&sort="+sortVal ,true);
 xmlhttp.send();

要禁用上一个按钮,请参阅str&lt; 0 [即负值]

为上一个按钮指定一个id属性id =“buttonpassprevious”

 if(str < 0){
   document.getElementById("buttonpassprevious").disabled = true; // Disable
 }else{
   document.getElementById("buttonpassprevious").disabled = false; // Enable
 }

在php结束时,您可以使用引用变量来获取这两个值。

<?php
  $buttonVal = $_GET['str'];
  $sortVal   = $_GET['sort']
?>

提问者似乎是初学者,因此我将答案扩展到完整性的基本级别。专家请原谅。

答案 1 :(得分:0)

如果你的按钮确实减少/增加,那么就像这样:

<select id="maxDaysSinceAdded" name="shorting" onchange="showUser()">
   <option selected='selected' value="1">Most Recent</option>
   <option value="2">Lowest Price</option>
   <option value="3">Highst Price</option>
 </select>

<button type="button" name="buttonpassvalue" value="-1"    onclick="showUser(this.value)"><< Previous</button>
<button type="button" name="buttonpassvalue" value="1" onclick="showUser(this.value)">Next >> </button>

<script>

function showUser(modifier) {

  // Modifier is the inc/dec value which is optional - default to zero?    
  var bpv = modifier || 0;

  // Str is always there so just grab it from select
  var str = document.getElementById("maxDaysSinceAdded").value;

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

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

  xmlhttp.open("GET", "productlistajax.php?q=" + str + "&buttonpassvalue=" + bpv, true);
  xmlhttp.send();
}

</script>

但除非您知道正在修改的内容的当前值,否则无法禁用这些按钮。但我可能不清楚你的目标。

答案 2 :(得分:0)

this.value = parseInt(this.value)+1会将1添加到您之前的值

<button type="button" name="buttonpassvalue" value="-1" onclick="showUser(this.value);this.value=parseInt(this.value)-1;"><< Previous</button> 
<button type="button" name="buttonpassvalue" value="1" onclick="showUser(this.value);this.value=parseInt(this.value)+1;">Next >> </button>