2017-06-19 64 views
-2

我正在構建一個Q/A網站。當用戶點擊一個特定的問題時,他被重定向到用戶可以發佈答案的問題頁面。ajaxStart()和ajaxStop()函數未被觸發

現在,問題是,當用戶點擊「答案」鏈接,很少有東西在後臺處理像更新數據庫,發送郵件等。我試圖在UI中顯示負載指示器,但AJAX功能沒有被觸發。

這裏是我的代碼:

HTML:

<span id="msg"><img src="ajax-loader.gif"/></span> 
<a id="sub-link" href="javascript:void(0)" onclick="loadAnswerList(document.getElementById('user-ans').value,<?php echo $qid; ?>,'<?php echo $posted_by; ?>')">Answer</a> 

JS:

$(document).ajaxStart(function() { 
    $('#msg').show(); 
}).ajaxStop(function() { 
    $('#msg').hide(); 
}); 

AJAX請求

function loadAnswerList(ans,qid,postedBy,page) { 
    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("ans_container").innerHTML = this.responseText; 
     } 
    }; 
    xmlhttp.open("GET","load_answers.php?ans="+ans+"&qid="+qid+"&postedBy="+postedBy+"&page="+page,true); 
    xmlhttp.send(); 
} 

我也嘗試添加$(文件)。就緒(function(){....});在ajax之上,但仍然不起作用。我錯過了什麼?

正在使用jQuery 3.2.1版本

+0

您能否請您將AJAX代碼添加到問題中 –

+0

謝謝。添加。請建議可以做些什麼。 – venky

+1

,因爲該Ajax調用不是jQuery的Ajax調用。如果你想在使用前後使用jQuery的Ajax方法。 – epascarello

回答

2

jQuery不支持原生XMLHttpRequest對象。您使用的ajaxStart和ajaxEnd行處理它們的api。所以爲了使用它,你需要使用jQuery的.ajax().get()方法。

0

感謝您的詳細信息。 這是修改後的功能:

function loadAnswerList(ans,qid,postedBy,page) { 
var answer=ans; 
var qstnid=qid; 
var postby=postedBy; 
var pg=page; 

var request = $.ajax({ 
    type: "GET", 
    url: "load_answers.php?ans="+ans+"&qid="+qid+"&postedBy="+postedBy+"&page="+page", 
    data: {ans: answer, qid: qstn_id, postedBy: postby, page: pg}, 
    dataType: "html" 
}); 

request.done(function(msg) { 
    alert ("Response: " + msg); 
}); 

request.fail(function(jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
}); 

} 

,如果我錯了請糾正我。還有一件事 - 我想顯示從PHP頁面到特定div的響應,就像我在之前的ajax請求中所做的一樣。

document.getElementById("ans_container").innerHTML = this.responseText; 

我該怎麼做?

相關問題