在ajax调用的脚本中调用ajax运行不正确(PHP)

时间:2017-02-06 19:59:03

标签: javascript php jquery ajax

我正在做的基本上是使用我在下面描述的3个文件

//File1.php
$('button.button1').click(function(e){
        $.ajax({
                 type: "POST",
                 url: "file2.php",

                 timeout: 180000
                })
                .done(function(data) {
                 //load data returned in modal
                })
                .fail(function(msg) {
                  //do something
                });
});

然后,我的下一个文件加载模式代码html(标题,正文和页脚),并带有一个名为“OK”的按钮。 (正文模态包含一个带有“确定”按钮的表单)

//file2.php

    $('button.ok').click(function(e){
              $.ajax({
                        type: "POST",
                        url: "File3.php",
                        contentType:false,
                        processData:false,
                        cache:false,
                        data: formData,
                        timeout: 180000
                    })
                    .done(function(data) {
    //do something
                    } 
                    })
                    .fail(function(msg) {
                        //do something
                    });
                });

     In my file3.php do bd operations and save the values

因此,当从第一个脚本执行程序时,页面会自动返回到索引并且查询不会在bd中执行,这是什么?我应该在每个文件中返回以便正确执行以及为什么在指定方法发布时通过get方法发送值(它们在url中可见)?帮助

总结一下,我有一个按钮执行ajax调用,加载一个模态并在模态内另一个ajax调用完成

1 个答案:

答案 0 :(得分:2)

jQuery在运行时只知道页面中的元素,因此jQuery无法识别动态添加到DOM的新元素。要解决这个问题,请使用event delegation,将新添加的项目中的事件冒泡到DOM中的一个点,当jQuery在页面加载时运行时。许多人使用document作为捕获起泡事件的地方,但没有必要一直向上移动DOM树。理想情况下you should delegate to the nearest parent existing at the time of page load.

$(document).on('click', 'button.ok', function(e){...

使用.on()功能可以解决您的问题。