0

$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 选择。出于测试目的,我只是返回一个带有 2 个选项的静态选择。

出于某种我无法理解的原因,我似乎无法让响应出现在#catid 中,尽管发布和响应执行得很好(我正在使用 Firebug Net 面板来监控发布和响应)。请把你的灯给我。

4

3 回答 3

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);

编辑:在上述解决方案之后,我完全不知道您的问题到底是什么,但我可以猜到您可能会遇到问题,因为您在 php 中的服务器端进行了 json 编码,因为您必须在你的代码。

var response = jQuery.parseJSON(data);
$("#catid").html(response.catlist);
于 2012-12-05T11:01:22.400 回答
0
$(document).ready(function() {
    $('#taglist').change(function(){
        $.post('../includes/ajax.php', {taglist:$(this).find("option:selected").attr('value')}, function(data) {
          $("#catid").html(data.catlist);
        });
    });
});
于 2012-12-05T10:58:47.887 回答
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);
            }
        });
    });
});
于 2012-12-05T11:01:32.020 回答