使用AJAX从从JQuery调用的文件中调用文件


Call file using AJAX from a file called from JQuery

我正试图从一个名为通过JQuery的文件调用服务器端。这很难解释,但我真正在做的是,我调用一个文件,将弹出像一个窗口使用JQuery。然后在弹出窗口中,我将使用AJAX调用服务器端文件。

我是这样调用第一个文件的:

JQUERY

function AddBill(id) {
    $("#displayDIV").show();
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.getElementById("displayDIV").innerHTML = this.responseText;
        }
    };
    xmlhttp.open("GET","file1.php?",true);
    xmlhttp.send();
}

现在我想调用file1.php

中的另一个文件

$(function() { 
    $("#formAdd").submit(function(e) {
        e.preventDefault();
        alert();
        $.ajax({  
            url: $(this).attr('action'),
            type: "post",  
            data: $(this).serialize(),
            error:function(){
                alert("ERROR : CANNOT CONNECT TO SERVER");
            },
            success: function(data) {
                alert(data);
            }
        });
        return false; 
    });
});

顺便说一下。这就是我调用AddBill()

的地方
<input type="button" class="updateButton" value="ADD BILLED TO" onclick="AddBill()"/>

这是file1.php

的内容
<form id="formAdd" action="server.php" method="POST">
    <input type="text" name="text1">
    <input type="submit" value="ADD">
</form>

AJAX没有被程序读取。我哪里做错了,或者有什么更好的方法?

谢谢

查看更新后的问题,也许您的ajax代码在内容添加到页面之前正在运行:

在ajax中试试:

$(document).on('submit', "#formAdd", function(e) {
不是

$("#formAdd").submit(function(e) {

浏览器不会执行插入到DOM中的脚本。你应该考虑其他方法来达到这个目的。

您可以包含一个脚本,然后注入file1.php的内容作为示例:

if (this.readyState == 4 && this.status == 200) {
    var g = document.createElement('script');
    var s = document.getElementsByTagName('script')[0];
    g.text = this.responseText;
    s.parentNode.insertBefore(g, s);
}

在这个问题上有一些其他有用的解决方案:可以用innerHTML插入脚本吗?