无法让AJAX响应出现在DIV中

时间:2012-12-05 10:56:21

标签: php jquery

$ catlist这是一个使用AJAX的jQuery POST:

$(document).ready(function() {
    $('#taglist').change(function(){
        $.post('../includes/ajax.php', { taglist: $(this).find("option:selected").attr('value')}, function(data) {
        $("#catid").html(response.catlist);
    });
    });
});

这就是ajax.php中发生的事情:

if(isset($_POST['taglist'])){
    $catlist = '<select name="cat_id[]" size="5" multiple id="cat_id[]" class="darkgrey w200px">';
    $catlist .= '<option value="123">123</option>';
    $catlist .= '<option value="456">456</option>';
    $catlist .= '</select>';
    echo json_encode(array("status"=>"success", "catlist" => $catlist));
}

在我的真实页面中,我将使用取决于POST的值来填充cat_id select。出于测试目的,我只是返回一个带有2个选项的静态选择。

由于某种原因我无法掌握,我似乎无法得到#catid内部的响应,尽管帖子和响应都很好(我使用Firebug Net面板来监控帖子和响应)。请告诉我你的光。

3 个答案:

答案 0 :(得分:1)

我注意到你没有与变量$ catlist相关的回声

 echo json_encode(array("status"=>"success", "catlist" => "abc"));

应该是像

这样的东西
echo json_encode(array("status"=>"success", "catlist" => $catlist));

你应该更新AJAX响应代码

$("#catid").html(response.catlist);

替换为

$("#catid").html(data.catlist);

编辑:我完全没有得到上述解决方案之后你的问题究竟是什么我可以猜到你可能会遇到问题,因为你在服务器端做了json编码php,你必须在你的代码中有以下chnages。

var response = jQuery.parseJSON(data);
$("#catid").html(response.catlist);

答案 1 :(得分:0)

$(document).ready(function() {
    $('#taglist').change(function(){
        $.post('../includes/ajax.php', {taglist:$(this).find("option:selected").attr('value')}, function(data) {
          $("#catid").html(data.catlist);
        });
    });
});

答案 2 :(得分:0)

试试这个:

$(document).ready(function() {
    $('#taglist').change(function(){
        $.ajax({
            type: "POST",
            url: '../includes/ajax.php',
            taglist: $(this).find("option:selected").attr('value'),
            success: function(data) {
                $("#catid").html(response.catlist);
            }
        });
    });
});