私はJavaScriptを使ってXMLHttpRequestを使って、ローカルサーバにHTTPリクエストを行います。これは私が使用しているコードです。JavaScriptの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)
しかし、これも未定義となっています。
私は応答を返すようにするにはどうすればよいですか?実行を中断する必要がある場合は問題ありませんが、有効な応答が必要です。
あなたは応答を受け取るまで実行が停止するようにいくつかの方法を提案することができます。 – user40647
これは問題です.Javascriptを停止すると、ブラウザ全体(タブ)が停止します。マルチスレッド化はありません。 'timer = window.setInterval(testMyResult、250)'と 'function testMyResult()'を実行できます。あなたの「ポストボックス」を1秒間に4回ポーリングします。結果が到着したら、 'window.clearInterval(timer)'する必要があります。 – Holger