AJAX / JS / PHP:提交选择框的值,无需刷新页面或单击按钮

时间:2012-07-21 01:42:52

标签: php javascript jquery ajax

我目前正在使用Ajax提交输入字段而不刷新页面或点击按钮。该函数适用于文本输入字段但它不能发布选择框的值,然后php回显结果。我查看了firebug工具,Ajax / js函数没有发布任何内容。

如何提交选择框的值,以便我可以用php回显? EXAMPLE

JS

<script>
$(document).ready(function() {
        var timer = null; 
        var dataString;   
          function submitForm(){
                         $.ajax({ type: "POST",
                         url: "index.php",
                         data: dataString,
                         success: function(result){
                         $('#item_input').text( $('#resultval', result).html()); 
                             }
                            });
                            return false;
           }
             $('#item_name').on('keyup', function() {
             clearTimeout(timer);
             timer = setTimeout(submitForm, 050);
             var name = $("#item_name").val();
             dataString = 'name='+ name;
          });
 }); 
</script>

PHP

<?php
      if ($_POST)
                {
                  $item_name     = $_POST['name'];
                  echo ('<div id="item_input"><span id="resultval">'.$item_name.'</span></div>');
                }
?>

HTML

<html>
<form method="post" id="form" name="form">  
<select name="item_name" value="<? $item_name ?>" size="4" id="item_name">
     <option value="">Item1</option>
     <option value="">Item2</option>
     <option value="">Item3</option>
     <option value="">Item4</option>
</select>
</form>
<div id="item_input"></div>
</html>

4 个答案:

答案 0 :(得分:4)

选择标记不会触发keyup事件,您应该使用change代替,请尝试以下操作:

 $('#item_name').on('change', function() {
     clearTimeout(timer);
     var name = $(this).val();
     dataString = 'name='+ name;
     timer = setTimeout(submitForm, 050);
 });

 $('#item_input').html(result); 

答案 1 :(得分:1)

似乎你的js是正确的问题在你的HTML部分。您没有提供选择列表值。请提供值以选择列表选项。

$(document).ready(function() {
     var timer = null; 
     var dataString;   
     function submitForm(){
       $.ajax({ type: "POST",
                url: "index.php",
                data: dataString,
                success: function(result){

                //$('#item_input').html( $('#resultval', result).html()); 
                //$('#special').text(result); 
                //$('#item_input').html( $('#resultval').html() + '<p>' + result + '</p>'); 
                $('#item_input').html(result); 

                }

       });
       return false;
     }


    $('#item_name').on('change', function() {
     clearTimeout(timer);
     var name = $(this).val();
     dataString = 'name='+ name;
     timer = setTimeout(submitForm, 050);
    });      

}); 

它应该是这样或你要发布的任何值

<select name="item_name" value="" size="4" id="item_name">
    <option value="item1">Item1</option>
    <option value="item2">Item2</option>
    <option value="item3">Item3</option>
    <option value="item4">Item4</option>
</select>

答案 2 :(得分:0)

使用submitForm()事件触发onchange,以便每次<select>的值发生变化时,都会提交。

答案 3 :(得分:0)

KeyUp适用于输入框和其他使用键盘的人。选择您可以在onClick或onChange上使用的框,最好是onChange:

$('#item_name').change(function() {
             clearTimeout(timer);
             timer = setTimeout(submitForm, 050);
             var name = $("#item_name").val();
             dataString = 'name='+ name;
}

这对你有用。

祝你好运!