我正在使用YUI 2.6和Struts 1.2 java web应用程序。
我遇到POST asyncRequest
的间歇性问题。服务器收到的一些请求没有任何参数。
大部分时间它工作正常。重现非常困难,只有我们的客户机器才会发生这种情况。我们无法在我们的环境中重现。我花了很长时间才找到根本原因。
Web浏览器是IE 7,8或9.我将不胜感激。
我查看this blog但没有帮助,因为我正在记录请求和参数的某些部分,其中内容类型标头正确地到达服务器。
代码:
new AjaxWrapper().asyncRequest( "<%=request.getContextPath()%>" + "/ajax/setValues.do",
{
numberCheck: numberCheck,
documentId: docBean.documentId,
values: JSON.stringify( valueMap ),
applyToF: applyToFCheckbox.checked,
codeExternalF: (applyToFCheckbox.checked && codeExternalF.checked),
applyToN: applyToNCheckbox.checked,
codeExternalN: (applyToNCheckbox.checked && codeExternalN.checked)
},
{
success: function( messageBeanJsonList, response, argument ) {
// some code here
},
failure: function( messages ) {
// some code here
},
after: function( messageBeanJsonList, response, argument ) {
// some code here
},
argument: { codingPanel: mainCodingPanel, changedValues: changedValues }
},
AjaxWrapper.Methods.Post
);
对参数进行编码的方法:
_encodeParameters: function(parameters) {
var params = new Array();
if (parameters) {
for(var name in parameters) {
if (YAHOO.lang.isArray(parameters[name])) {
for(var i=0; i<parameters[name].length; i++) {
params.push(encodeURIComponent(name) + "=" + encodeURIComponent(parameters[name][i]));
}
}
else {
params.push(encodeURIComponent(name) + "=" + encodeURIComponent(parameters[name]));
}
}
}
return params.join("&");
}