Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮时发出AJAX请求_Javascript_Jquery_Ajax_Twitter Bootstrap - Fatal编程技术网

Javascript 单击按钮时发出AJAX请求

Javascript 单击按钮时发出AJAX请求,javascript,jquery,ajax,twitter-bootstrap,Javascript,Jquery,Ajax,Twitter Bootstrap,首先,我不太熟悉JQuery和AJAX。我通过尝试在网上找到的所有东西,得出了以下代码,老实说,我并不完全理解这些代码 我希望显示一个引导模式,当单击按钮时,它包含来自数据库的记录。 我的问题是,当页面加载时,它已经打开了模式,而不是单击按钮 <button id="modalData">Load Modal</button> <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-l

首先,我不太熟悉JQuery和AJAX。我通过尝试在网上找到的所有东西,得出了以下代码,老实说,我并不完全理解这些代码

我希望显示一个引导模式,当单击按钮时,它包含来自数据库的记录。 我的问题是,当页面加载时,它已经打开了模式,而不是单击按钮

<button id="modalData">Load Modal</button>

<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title" id="myModalLabel">Plantilla</h4>
            </div>
            <div class="modal-body">
                <table class="table table-striped table-bordered table-hover">
                    <thead>
                        <tr>
                            <th>Item Code</th>
                            <th>New Item Code</th>
                            <th>Position</th>
                            <th>Station</th>                                    
                        </tr>
                    </thead>
                    <tbody>
                        <c:forEach var="plantilla" items="${sessionScope.plantilla}">                                     
                            <tr>  
                                <td><c:out value="${plantilla.getItemCode()}"/></td>
                                <td><c:out value="${plantilla.getNewItemCode()}"/></td>
                                <td><c:out value="${plantilla.getPosition()}"/></td>
                                <td><c:out value="${plantilla.getStation()}"/></td>                                                                        
                            </tr>
                        </c:forEach>  
                    </tbody>
                </table>
            </div>

        </div>
    </div>
</div>
这是我的Servlet:

PlantillaViewDao dao = new PlantillaViewDao();
List<PlantillaView> plantilla = dao.read();

HttpSession session = request.getSession();
session.setAttribute("plantilla", plantilla);

$。当执行您的方法时。。。这就是为什么它会显示在pageload上

function loadPlantilla() {                
    $.ajax({
        url: './TryAjax',
        type: 'POST'
    }).done(function() {
        $('#modal').modal('show');
      });
}
你必须这样做

或者,如果您真的想使用$。可能是因为您收到了多个类似这样的ajax调用:

$("#modalData").click(function() {
    $.when(loadPlantilla(), method2(), method3()).done(function() {
        $('#modal').modal('show');
    });
});

您正在立即调用函数,而不是传递引用

$("#modalData").click(loadPlantilla);
还可以根据您的ajax请求使用.done:

function loadPlantilla() {                
    $.ajax({
        url: './TryAjax',
        type: 'POST',
        error: function() {
            alert('Ajax readyState: ' + xhr.readyState + '\nstatus: ' + xhr.status + ' ' + err);
        }
    }).done(function() {
        $('#modal').modal('show');
    });
}

快速查看此项。

$。当执行方法时。。。这就是为什么它会显示在PageLoad上,我只有一个ajax调用。我不知道什么时候可以进行多个ajax调用。正如我所说,我刚刚开始学习JQuery和AJAX。我已经用您建议的方法替换了loadPlantilla方法,它不再显示加载模式。但问题是当我点击按钮时。它似乎不起作用。我编辑了我的代码。实际上,您应该再次考虑错误代码。如您所见,有3个参数被传递到函数类型:函数jqXHR jqXHR、字符串textStatus、字符串ERRORSHORN;没有?它似乎在页面加载时调用了该方法,因为您正在传递一个引用—它是一个回调方法。单击链接时会调用它。执行该方法,以便传递该方法的返回值。
function loadPlantilla() {                
    $.ajax({
        url: './TryAjax',
        type: 'POST',
        error: function() {
            alert('Ajax readyState: ' + xhr.readyState + '\nstatus: ' + xhr.status + ' ' + err);
        }
    }).done(function() {
        $('#modal').modal('show');
    });
}