Ajax没有处理select标签,PHP,AJAX

时间:2015-07-14 00:00:22

标签: php jquery ajax

我正在尝试在带有2个选项的select标签上使用ajax,但由于某种原因它没有获得$ _POST。它打印出“---”,但它不会打印$ _POST值,即1或2.我不确定我做错了什么。请看一下我的代码:

newtest.php

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<script type = "text/javascript"> 

function ajax(url,type,theName,id) {

      $.ajax({
           type: "POST",
           url: url,
           data: { select: $(type+'[name='+theName+']').val()},
           error: function(xhr,status,error){alert(error);},
           success:function(data) {
             document.getElementById( id ).innerHTML = data;
           }

      });

}

</script>

<?php

echo "<select name = 'name' onchange = 'ajax(\"newtestx.php\",\"input\",\"name\",\"output\")'>";
echo "<option value = '1'> 1 </option>";
echo "<option value = '2'> 2 </option>";
echo "</select>";

echo "<div id = 'output'></div>";

?>

newtestx.php

<?php

$name = $_POST['name'];
echo $name."---";

?>

3 个答案:

答案 0 :(得分:1)

您正在发送帖子参数select并尝试接收$_POST['name']

确保它们匹配...... nameselect

答案 1 :(得分:1)

您正在使用键&#34发送POST参数;选择&#34;到AJAX调用中的服务器:

   data: { select: $(type+'[name='+theName+']').val()},

在newtestx.php中,您尝试使用键&#34; name&#34;从POST参数中检索值。 - 不存在:

$name = $_POST['name'];

您可以通过为参数键指定相同名称来轻松解决此问题。如果您要查找$ name = $_POST['select'],则会找到该参数。

内联Javascript被认为是不好的做法,并且不需要回显HTML标记,这使得标记更难以使用。

<强> newtest.php

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="[link to your javascript file here]"></script>
<select name='numbers' class="postValueOnChange" data-id-to-update="output" data-post-url="newtestx.php">
    <option value='1'>1</option>
    <option value='2'>2</option>
</select>
<div id='output'></div>

Javascript文件

$(document).ready(function () {
    $('.postValueOnChange').change(postSelectedValue);

    function postSelectedValue(e) {
        var $self = $(this);
        var url = $self.data('post-url');
        var $elementToUpdate = $('#' + $self.data('id-to-update'));

        var jqxhr = $.ajax({
            type: "POST",
            url: url,
            data: {
                selected: $self.val()
            }
        });
        jqxhr.done(function (data) {
            $elementToUpdate.html(data);
        });
        jqxhr.fail(function (jqXHR, textStatus, errorThrown) {
            alert(errorThrown);
        });
    }
});

<强> newtestx.php

<?php
$name = $_POST['selected'];
echo $name."---";
?>

答案 2 :(得分:0)

首先,由于您使用的是jQuery,为什么还在使用内联javascript?

我建议您首先围绕jQuery $(document).ready(function() { $('select').change(function(e) { e.preventDefault(); var selected = $('.select option:selected').val(); var id, theName, url= ...// get it from the DOM $.ajax({ type: "GET", url: url, data: { select: selected}, error: function(xhr,status,error){alert(error);}, success:function(data) { $('#'+id).html(data); } }); }); }); 事件重新构建代码:

    <form action="">  
        <select name="name">
        <option value="1">1</option>
        <option value="1">1</option>
        </select>


    </form>

<div id="output"></div>

其次,为什么你用PHP编写HTML代码,你只是用引号和双引号以及不需要的空格来挣扎并浪费时间。

onclick