我正试图从一个名为通过JQuery
的文件调用服务器端。这很难解释,但我真正在做的是,我调用一个文件,将弹出像一个窗口使用JQuery
。然后在弹出窗口中,我将使用AJAX
调用服务器端文件。
我是这样调用第一个文件的:
JQUERYfunction 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插入脚本吗?