簡體   English   中英

用javascript返回HTTP響應

[英]Returning the HTTP response in javascript

我在javascript中使用XMLHttpRequest向本地服務器發出HTTP請求。 這是我正在使用的代碼。

var xhr = new XMLHttpRequest();
xhr.open("POST", "//localhost:5000/translate", true); 
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
xhr.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
xhr.send(JSON.stringify({"sentence":str}));


xhr.onreadystatechange = processRequest;

function processRequest(e)
{
  if (xhr.readyState == 4)
  {
    console.log('trans_res set');
    trans_res = xhr.responseText; // here trans_res is a global variable
    return String(xhr.responseText);
  }
}

我希望此函數返回responseText,以便可以在其他地方使用它。

為此,我嘗試了兩種方法:1)我嘗試返回響應並在控制台中打印響應

var temp = function(string)
console.log(temp)

但是temp變量在控制台中來時未定義,主要是我認為這是因為在進入console.log之前尚未設置(未返回響應)

2)我放入一個全局變量(trans_res)並將其設置在函數中並打印

var temp = function(string)
console.log(trans_res)

然而,它也即將變得不確定。

我如何確保我返回響應,如果我需要在兩者之間的某個地方暫停執行,那么可以,但是我想要一個有效的響應。

您需要新的螺絲刀。 您使用郵箱(trans_res)發送到的位置向亞馬遜發送請求。 亞馬遜正在與您異步。 幾分鍾后,如果您在郵箱中查找,則找不到螺絲刀。 一個小時后,也是。 “郵箱”的問題是,您不知道要看的時間。

當readyState變為4時,您必須進行工作(顯示,更改,通知)。

我認為@Holger的回答有些正確。 您正在檢查返回值是否在函數實際生成之前。 有時要花很長時間才能產生價值。 您應該專注於使函數更快,或者應該繼續檢查返回的值。

使用if-else語句檢查該值。 如果未定義,請記錄它。 如果與UX相關,則可以在用戶端使用加載輪動畫。

暫無
暫無

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

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