阿贾克斯& JavaScript Multiple Select onchange在3个选定项目后失败

时间:2013-11-25 19:30:01

标签: javascript php ajax

我有一个带有以下代码的选择输入:

<select name="color" id="color" multiple class="form-control chzn-select" tabindex="8" onchange="autosave(this.id,this.value)">

它成功发送了功能ID和选择值,但看到一个人可以选择多个项目,它就会出现问题。我可以选择最多3个项目而没有问题,但尝试选择第4个是导致它传递第一个选定项目的值。不是最近选择的项目。这是函数,它发送其他信息,如标题和日期(两个文本输入):

function autosave(inputid,values) {
var dataObj = {};
dataObj[inputid] = values;
  $.ajax({
      type: "POST",
      url: "save.php",
      data: dataObj,
      success: function(msg) {
          $('#autosavenotify').text(msg);
          console.log('success');
      }
  })
}

HTML明智我正在使用Bootstrap3,如果这有所不同,这就是我如何填充选择选项:

<?php
$colors = array('Red','Blue','Yellow','Purple','Green','Orange');
foreach($colors as $c) {
    $selected = '';

    if(in_array($c, $_SESSION['array']['colors'])) {
        $selected = 'selected';
    }

    echo '<option value="'.$c.'" '.$selected.'>'.$c.'</option>';
}
?>

为什么会发生这种情况的任何想法?我的save.php页面将所有项目成功放入数组中,ajax只是因某种原因发送了错误的值。

1 个答案:

答案 0 :(得分:0)

因为您已经在使用jQuery,所以最好只使用$(this).val( )从您的选择中获取所选的选项。这是我用你提供的代码提出的一个小提琴:http://jsfiddle.net/y7NfF/1/

您可能考虑采用的另一种方法是使用jQuery的.serialize().serializeArray()函数在通过ajax提交数据时获取表单的所有值。但是,如果你想一次做一个元素,你的方法就可以了。

以下是这些功能的几个链接:

http://api.jquery.com/serialize/

http://api.jquery.com/serializeArray/