2016-11-12 59 views
2

我想從名爲槽JQuery的文件調用服務器端。這是很難解釋,但我真正在做的是,我打電話給一個文件,將彈出像一個窗口使用JQuery。然後在彈出的窗口中,我將使用AJAX來調用服務器端文件。使用來自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

AJAX

$(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()"/> 

,這是AJAX沒有被程序讀取我的file1.php

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

內容。我在哪裏出錯或者有什麼更好的方法來做到這一點?

感謝

+0

您可能需要包裹AJAX的'script'標籤,所以內容是由瀏覽器 – Filype

+0

是解釋爲一個腳本。我做到了。我的jQuery和Ajax都在同一個腳本標籤中。 –

+0

他們都在相同的腳本標籤?像''如果是這樣,請在另一個腳本標記中嘗試腳本。您不能將腳本包含在具有'src'屬性的腳本標記中。 –

回答

1

望着更新的問題,也許您的ajax代碼在內容添加到頁面之前正在運行:

在您的ajax中試試這個:

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

代替

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

謝謝。你是對的 –

0

瀏覽器不會執行插入到DOM中的腳本。你應該考慮其他方式來實現這一點。

您可以包括腳本,ADN再注入的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); 
} 

有關於這個問題的其他一些有用的解決方案:Can scripts be inserted with innerHTML?