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 select に値を入力します。テスト目的で、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);

編集:上記の解決策の後であなたの問題が正確に何であるかを正確に把握していませんが、私が推測できることの1つは、phpでサーバー側で作成したjsonエンコードが原因で問題が発生している可能性があることです。あなたのコード。

var response = jQuery.parseJSON(data);
$("#catid").html(response.catlist);
于 2012-12-05T11:01:22.400 に答える
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 に答える
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 に答える