【问题标题】:Is there a way to store a session variable within the javascript of an AJAX call or only in the method?有没有办法在 AJAX 调用的 javascript 中或仅在方法中存储会话变量?
【发布时间】:2015-01-24 11:32:14
【问题描述】:

我现在一直在寻找,但找不到真正的答案。我想知道是否有可能轻松搜索我页面上的每个复选框并检查它是否被选中,然后将此数据发送到我的控制器。就个人而言,我正在考虑在 AJAX 调用中简单地修改会话变量,但我不知道这是怎么可能的(我也没有在互联网上找到任何东西)。有没有人对此有更多经验并可以帮助我?即使不妨碍会话变量,也欢迎提出建议。

【问题讨论】:

  • 我宁愿为所有复选框定义单一方法并将 JavaScript 变量设置为 true(如果用户选中任何一个)。在 Ajax 调用中向服务器发送此变量值。请记住,这只会告诉服务器是否在客户端选中了任何复选框,如果它们已经被选中,则服务器已经知道。

标签: javascript jquery ajax asp.net-mvc session


【解决方案1】:

是的,您可以检查页面上的所有复选框是否都被选中 给他们分配一些班级说'cls'

if($('.cls:checked').length == $('.cls').length)
{ 
  //on true ecexute your ajax call to send data to controller
}

哦,你不能在 javascript 或 jquery 中修改任何会话变量

【讨论】:

    【解决方案2】:

    会话变量驻留在服务器的内存中,有时只是通过 cookie 或通过将状态放入 URL 来识别。它们不能被客户端的 javascript 更改。

    就您的问题而言,一个简单的 jquery 选择器 $('[type="checkbox"]') 就可以完成这项工作。

    var $cs = $('[type="checkbox"]')
    var o = {};
    for(var i=0; i<=$cs.length; i++){
      var $c = $($cs[i]);
      o[$c.attr('name')||$c.attr('id')] = $cs[i].prop('checked'); 
    }
    

    * 这段代码可能有我刚刚输入的错误,但你会得到图片 ** 确保所有复选框都具有Idname 属性

    当这段代码运行时,你会得到对象 o

    {
     name1 : true,
     name2: false
    }
    

    【讨论】:

    • 我还能得到每个复选框的名称吗?因为我必须知道哪些已检查,哪些未检查
    • 我假设在 ASP.net 应用程序中这会产生一个字符串数组,但我会在编程后看到:P
    • @Marijn - 您可以调整答案以形成具有属性名称和值的对象数组并将其发布到服务器。这会更容易,因为 asp.net 不擅长动态模型绑定
    【解决方案3】:

    听起来您需要使用表单来提交一组选中/未选中的框。然后,在提交时,触发您的 AJAX 请求。

    HTML:

    <form id="target">
      <input type="checkbox" name="animal" value="Dog"> I have a dog<br>
      <input type="checkbox" name="animal" value="Cat"> I have a cat<br>
      <input type="submit" value="Submit">
    </form>
    

    JavaScript:

    $( "#target" ).submit(function( event ) {
      // Send your AJAX Request
    });
    

    有用的文档:

    .submit() | jQuery Documentation Page

    jQuery.ajax | jQuery Documentation Page

    【讨论】:

      【解决方案4】:

      试试下面的代码

      $('input[type="checkbox"]:checked').each(function () {
      
                          });
      
      
      
      var checkedboxes = $('input[type="checkbox"]:checked').length;
                      var totalboxes = $('input[type="checkbox"]').length;
                      console.log(checkedboxes);
                      console.log(totalboxes);
      

      【讨论】:

        猜你喜欢
        • 2011-06-10
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2016-04-17
        • 2014-01-30
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        相关资源
        最近更新 更多