2015-11-01 106 views
-1

有關於此的數千個主題,但我沒有找到任何人有同樣的問題。我嘗試了很多例子,但我不知道我錯了什麼。我創建了這個從db調用數據並在這個html頁面中填充兩個選項中的一個的例子。我有兩個函數,一個在我給頁面充電時正確執行,但是當我點擊按鈕時,我應該執行第二個函數。那麼,如果我使用body標籤對這兩個函數進行負載充電,則它可以正常工作,而如果我先充電,然後嘗試通過onclick事件調用第二個函數,則不起作用。有人可以幫助我嗎?謝謝執行javascript onclick按鈕

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Document</title> 
</head> 
<script type="text/javascript"> 

function getServ() { 
var url = "all_wom.php"; 
var sel = document.getElementById('service1'); 
var obj; 
var xmlhttp = new XMLHttpRequest(); 
// ajax 
xmlhttp.onreadystatechange = function() { 
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
    obj = JSON.parse(xmlhttp.responseText); 
    for (i = 0; i < obj.length; i++) { 

    var opt = document.createElement('option'); 
    opt.innerHTML = obj[i].Descrizione; 
    opt.value = obj[i].ID; 
    sel.appendChild(opt); 
    } 
} 

} 
xmlhttp.open("GET", url, true); 
xmlhttp.send(); 
} 

function getCol() { 
var url = "all_col.php"; 
var sel = document.getElementById('service2'); 

var obj; 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     obj = JSON.parse(xmlhttp.responseText); 

    for (i = 0; i < obj.length; i++) { 

    var opt = document.createElement('option'); 
    opt.innerHTML = obj[i].Nome; 
    opt.value = obj[i].ID; 
    sel.appendChild(opt); 
    } 
} 

} 
xmlhttp.open("GET", url, true); 
xmlhttp.send(); 
} 

</script> 
<body onload=getCol();> 
<form name="form" > 

<br /> 
<br /> 
<label>First Select</label><select id="service1" ></select> 
<br /> 
<br /> 
<br /> 
<br /> 
<label>Servizi </label><select id="service2" ></select> 
<br /> 
<br /> 

<input type="submit" align="center" onClick=getServ(); value="service1" /> 
<input type="submit" align="center" value="service2" /> 
<br /> 
<br /> 
</form> 
</body> 
</html> 
+1

我看不到任何附近點擊事件的代碼。爲什麼它應該點擊操作? – Quentin

+0

我也不能-1 – iConnor

+0

我剛剛編輯好的代碼。嘗試很多次,我已經刪除onclick事件按鈕上的很多例子。我不同意你的-1,對不起。 – Jayelef

回答

1

點擊事件附加到提交按鈕。

當您單擊該按鈕,您:

  1. 觸發Ajax請求
  2. 提交表單
  3. 離開頁面
  4. 摧毀Ajax請求在運行JavaScript環境(所以阿賈克斯響應處理程序現在無處運行)
  5. 加載新頁面

如果您希望Ajax正常工作,則需要防止提交按鈕的默認行爲。

使用舊式固有事件屬性的方式,您可以使用onclick屬性中的return false;。您應該切換到modern event binding techniques

+0

謝謝@Quentin,我假設你有什麼建議,但我不知道如何解決。我會嘗試addeventlistener,這是你已經指出的鏈接解釋。 – Jayelef