簡體   English   中英

AJAX功能需要雙擊嗎?

[英]AJAX Function Requires Double Click?

由於某種原因,我必須單擊兩次以激活/停用用戶。 顯然我不想要它,一鍵就足夠了。 我在這里做錯了什么?

(我猜測AJAX調用有問題)

C#:

var toggleUrl = "AdminListUsers.aspx?column=" + (IsClicked.FirstOrDefault().Key ?? "Name") + "&direc=" + (IsClicked.FirstOrDefault().Value) + "&a=chstat&q=" + id.ToString() + "&d=" + disabled + "&z=" + Server.UrlEncode(txtSearchFor.Text);

var hl = new HyperLink();
hl.Text = status;
hl.Style.Add(HtmlTextWriterStyle.Color, (disabled ? "red" : "green"));
hl.NavigateUrl = toggleUrl;
hl.Attributes.Add("onclick", "loadDoc();return true;"); //Calling the function here
cell.Controls.Add(hl);
tr.Cells.Add(cell);

cell = new TableCell();
cell.Width = new Unit("10%");

cell.Controls.Add(new LiteralControl("<nobr>"));

var linkbtn = new HyperLink
{
  NavigateUrl = toggleUrl,
  Width = 16,
  Height = 16,
  CssClass = disabled ? "user-status-disabled" : "user-status-enabled"
};
linkbtn.Attributes.Add("id", "aButton_" + id);
linkbtn.Attributes.Add("onclick", "loadDoc();return true;"); //Calling the function here
cell.Controls.Add(linkbtn);
cell.Controls.Add(new LiteralControl("&nbsp; "));

JavaScript的:

function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function () {
    if (this.readyState === 4 && this.status === 200) {
      window.scrollTo(window.pageXOffset, window.pageYOffset);
      window.location.reload();
    }
  };
  xhttp.open("GET", "AdminListUsers.aspx?column=Disabled&direc=False&a=chstat&z=+", true);
  xhttp.send();
  $('.TellusAlternatingRowColor').load(document.URL + ' .TellusAlternatingRowColor');
}

DataRows的圖像

您用於聯系服務器的對象XMLHttpRequest是Ajax概念的一部分。 Ajax代表異步JavaScript和XML。 這意味着一旦傳遞的URL請求解決后,與onreadystatechange相關的事件就會被觸發。 如果readyStatestatus合適,那么您的window調用也將得到解決。

由於是異步的,整個瀏覽器不會停止,因為服務器尚未響應,整個程序將繼續。 因此,您仍然可以按下按鈕,但是在該請求得到響應之前,將不會發生任何事情 再次單擊它會將另一個請求發送到您的服務器,我認為這也已解決,但是此時您在window上的調用已經發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM