【问题标题】:Ajax data is not working with sessionsAjax 数据不适用于会话
【发布时间】:2018-03-15 15:21:12
【问题描述】:

我想通过 ajax 发送下拉列表和复选框值,并在控制器中将下拉值存储在会话中,并将其与复选框值一起使用,但这不起作用。我希望在选择下拉列表时显示其值,但当选中复选框,然后将显示下拉列表和复选框的值。

这是我的下拉菜单和复选框

<select  class="product-sort-select" onchange ="showUser1(this.value)">
        <option value="" selected="selected">Sort By</option>
        <option value="byname"> name</option>
        <option value="bydate"> date</option>
        <option value="bypopularity"> popularity</option>
</select>




 <li class="checkbox">
    <label>
       <input type="checkbox" class="cb" id="featured" name="chk[]"  onchange="cbChange(this); showUser()" value="featured">Featured <small><?= "(".$featuredeals_count.")";?></small>
    </label>
 </li>

这是我正在使用的 ajax

  function showUser1(strr) {
     if (strr == "")   
     {
       document.getElementById("txtHint").innerHTML = "";
        return;
     } 
     else 
     { 
        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 (this.readyState == 4 && this.status == 200) {
          document.getElementById("txtHint").innerHTML = this.responseText;
       }
     };
      xmlhttp.open("GET","Search/sorted_deals?strr="+strr,true);
      xmlhttp.send();
    }
   }
 function showUser() {
 var str = []
 var checkboxes = document.querySelectorAll('input[type=checkbox]:checked')
 for (var i = 0; i < checkboxes.length; i++) 
 {
     str.push(checkboxes[i].value)
 }
 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 (this.readyState == 4 && this.status == 200) 
    {
         document.getElementById("txtHint").innerHTML = this.responseText;
     }
  };
   xmlhttp.open("GET","Search/sorted_deals?str="+JSON.stringify(str),true);
   xmlhttp.send();
}

这是我在控制器中的功能

$_SESSION['variable']=$this->input->get('strr');
$variable=$_SESSION['variable'];
if($variable=="byname")
{   
   echo $_SESSION['variable'];
    //$user_search=$this->Deals->sort_by_name($deal_name,$city_id,$city_status);
} 
$variables = json_decode($this->input->get("str"));
for ($a = 0; $a < count ($variables); $a++) 
{
    if($variables[$a]=="featured")
     {
         echo $variables[$a];  
         echo $_SESSION['variable'];
     } 
}

【问题讨论】:

  • 你添加了会话库吗??

标签: javascript php ajax codeigniter


【解决方案1】:

XMLHttpRequest 请求不允许 cookie 标头原因如下所示:Why cookies and set-cookie headers can't be set while making xmlhttprequest using setRequestHeader?,因此请尝试其他方法来实现此 XHR 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2014-01-30
    • 2012-07-13
    • 2014-10-09
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多