jQuery.ajax()のリクエストが返らない
下のような通信処理を書いています。
var returnObj = null;
var errorMsg = '';
function getAjaxHttpRequest(prms)
{
returnObj = null;
if (prms["sendXml"] == null)
{
prms["sendXml"] = "";
}
jQuery.ajax({
contentType: prms["contentType"]
, type: prms["type"]
, url: prms["url"]
, timeout: prms["timeout"]
, cache: prms["cache"]
, async: false
, processData: false
, data:
"formId=" + prms["formId"]
+ "&submitStatus=" + prms["submitStatus"]
+ "&appId=" + prms["appId"]
+ "&data=" + prms["sendXml"]
, success: function(data, dataType)
{
errorMsg = "";
}
, error: function(XMLHttpRequest, textStatus, errorThrown)
{
errorMsg = textStatus + ' - ' + errorThrown;
}
, complete : function(xmlHttpRequest, textStatus) {
var READYSTATE_COMPLETED = 4;
if( xmlHttpRequest.readyState == READYSTATE_COMPLETED ) {
var HTTP_STATUS_OK = 200;
if( xmlHttpRequest.status == HTTP_STATUS_OK ) {
returnObj = {
resultCode: 'success'
, data: xmlHttpRequest.responseText
};
} else {
if (xmlHttpRequest.responseText == '') {
returnObj = {
resultCode: 'error'
, textStatus: xmlHttpRequest.status + " - " + xmlHttpRequest.statusText
, responseText: errorMsg
};
} else {
returnObj = {
resultCode: 'error'
, textStatus: xmlHttpRequest.status + " - " + xmlHttpRequest.statusText
, responseText: xmlHttpRequest.responseText
};
}
}
} else {
returnObj = {
resultCode: 'error'
, textStatus: xmlHttpRequest.readyState + " - " + xmlHttpRequest.status + " - " + xmlHttpRequest.statusText
, responseText: xmlHttpRequest.responseText
};
}
errorMsg = '';
}
});
return returnObj;
}
まれに最後のreturnObjがnullで返ってくるようです。なぜでしょうか?
何が起きている可能性があるでしょうか。
jquery-1.4.3です。
お礼
ご回答ありがとうございます。 document.write()は影響していなさそうです。 alertでも試してみましたが同じ結果になります。 先ほど気が付いたのですが、エラーの内容を勘違いしていたところがありました。 Error: readyState code is 2 Error: readyState code is 3 Error: status code is 0 Error: readyState code is 1 この順でエラーのアラートが表示されていました。 HTTP Readyが4以外のときは「Error: readyState code is」のエラーメッセージが必ずでる形にしてあるので、2番目までは正常だと思います。3番目はHTTP Readyが4で、status codeが0になっています。そして、なぜ一旦HTTP Readyが4になったのに4番目に再度試されているのかは不明ですが、status codeが0になったときは再度試すみたいな機能があるのでしょうか。 ローカルでサーバーを使っている以上、status codeが0になってしまうのでしょうか。 ブラウザはFirefoxを使っています。