0
我試圖創建一個函數測試XMLHttpRequest(帶回調參數)。但它總是返回undefined。QUnit XMLHttpRequest測試
function sendMessage(serverFile, data, retVal) {
var xhr = new XMLHttpRequest();
xhr.open('POST', serverFile, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
switch (xhr.status) {
case 200:
retVal(xhr.responseText);
break;
case 404:
retVal("404");
break;
case 0:
retVal("0");
break;
default:
retVal("Other Code");
}
}
}
xhr.send("data="+data);
}
所有服務器上的文件都很好。
這是測試腳本。
QUnit.test("Message Send XMLHttpRequest Test", function(assert) {
assert.expect(5);
var done1 = assert.async();
var done2 = assert.async();
var done3 = assert.async();
var done4 = assert.async();
var done5 = assert.async();
window.setTimeout(function() {
var ret;
sendMessage("server.php", "Hello Text Message", function(responseText) {
ret = responseText;
});
assert.equal(ret, "Message Correct", "Sending normal message");
done1();
}, 0);
window.setTimeout(function() {
var ret;
sendMessage("server.php", "<script>Message with Tags<script>", function(responseText) {
ret = responseText;
})
assert.equal(ret, "Message Error", "Sending message with tags");
done2();
}, 100);
window.setTimeout(function() {
var ret;
sendMessage("wrong.php", "Hello Text Message", function(responseText) {
ret = responseText;
})
assert.equal(ret, "404", "Requesting wrong server file");
done3();
}, 100);
window.setTimeout(function() {
var ret;
sendMessage("http://wrongDomain.wrong/server.php", "Hello Text Message", function(responseText) {
ret = responseText;
})
assert.equal(ret, "0", "Requesting wrong server(or server has no answer)");
done4();
}, 100);
window.setTimeout(function() {
var ret;
sendMessage("otherCode.php", "Hello Text Message", function(responseText) {
ret = responseText;
})
assert.equal(ret, "Other Code", "Request returns other code");
done5();
}, 100);
});
這裏RET永遠是不確定的。 我做錯了什麼?