3

我正在尝试重新加载div已通过 AJAX 动态创建的数据,但出现 403 禁止错误。也许我正在做的事情有问题。请你介意帮助我。提前致谢。

HTML:

<div id="curr-elem">
    <div class="box-header">
        <h3>Elementary Subject</h3>
    </div>

    <div id="curr-elem-content">
        <table id="curr-elem-tble">
        </table>
    </div>
</div>

jQuery:

var html;
$.ajax({
    type: 'POST',
    url: 'add_subject.php',
    dataType: 'json',
    data: { 'func_numbr':'2' },
    success: function(data) {
        var activator;
        var disabler;
        var counter_sub = 0 ;

        $.each(data, function(i, item) {
            if (data[i].subj_status == "0") {
                classToAddInactve = "inactiveButton";
                DisableInactve = "disabled=\"disabled\""
                classToAddActve = "";
                DisableActve = ""
            }
            else {
                classToAddInactve = ""
                DisableInactve = ""
                classToAddActve = "inactiveButton";
                DisableActve = "disabled=\"disabled\""
            }

            html = "<tr>";

            html += "<td><lable>Subject: </label><input type='text' name='subject[" + counter_sub + "]' rel='" + data[i].subj_id + "' value='" + data[i].subj_name + "' readonly='readonly'></td>";
            html += "<td><input type='button' rel='#loading-window' id='activate[" + counter_sub + "]' name='active' class='button active modal2 " + classToAddActve + "' value='Apply' " + DisableActve + "> ";
            html += "<input type='button' rel='#loading-window' id='inactivate["+counter_sub+"]' name='active' class='button inactive modal2 " + classToAddInactve + "' value='Remove from list' " + DisableInactve + "></td>";
            html += "</tr>";

            $('#curr-elem-tble').append(html);

            counter_sub = counter_sub +1;
        });
    }     
});

触发div刷新的JS:

$('.active').live('click', function() {
    var prev = $(this).parent().prev().find('input[type=text]');
    var valText = $(prev).val();
    var relVal = $(this).parent().prev().find('input[type=text]').attr('rel');
    var div = $(this).parent().parent().parent().parent().parent().attr('id');

    $("[id*="+div+"]").hide();

    $.ajax({
        type: 'POST',
        url: 'add_subject.php',
        dataType: 'json',
        data: {
            'func_numbr': '7',
            'subjct_name': valText,
            'subjct_id': relVal
        },
        success: function(data) {
            $('#mask2').hide();
            $('#loading-window').hide();
            $("[id*=" + div + "]").load("[id*=" + div + "]");
        }     
    });
});
4

2 回答 2

0

在您的success回调中,您错误地使用了jQuery.load方法。load()需要一个 URL,而不是选择器。

您可能打算这样做:

    success: function(data) {
        $('#mask2').hide();
        $('#loading-window').hide();
        $("[id*=" + div + "]").html(data.someHTMLvar);
    }   
于 2012-12-13T13:46:43.497 回答
0

首先检查是否add_subject.php真的可以通过从浏览器访问它来访问。如果可行,则服务器没有问题。

就像 lifo 所说的那样,您使用$.load了错误的方式。$.load接受一个 url 作为第一个参数。

  success: function(data) {
        $('#mask2').hide();
        $('#loading-window').hide();
    }

除此之外,您最好使用像handlebarsmustache这样的模板库。这看起来不太好:

    html = "<tr>";

    html += "<td><lable>Subject: </label><input type='text' name='subject[" + counter_sub + "]' rel='" + data[i].subj_id + "' value='" + data[i].subj_name + "' readonly='readonly'></td>";
    html += "<td><input type='button' rel='#loading-window' id='activate[" + counter_sub + "]' name='active' class='button active modal2 " + classToAddActve + "' value='Apply' " + DisableActve + "> ";
    html += "<input type='button' rel='#loading-window' id='inactivate["+counter_sub+"]' name='active' class='button inactive modal2 " + classToAddInactve + "' value='Remove from list' " + DisableInactve + "></td>";
    html += "</tr>";

或者,如果您不想使用模板库,则从服务器构建 html,这样您就可以使用它$.load来加载您需要的 html。

于 2012-12-13T13:58:57.183 回答