Struts2 Action,Jquery AJAX调用工作正常,并且在本地开发环境中正确呈现UI,但在生产服务器上则不



我会尽可能准确地解释我所面临的情况。我正在开发一个基于Struts2的web应用程序,在其中一个页面中,我使用Jquery 1.4.4对Struts2 Action类进行Ajax调用(POST(,并返回一个XML,我对其进行迭代,构建一个选择框并在UI上呈现它。

这段代码在我的本地WAS6.1开发环境中运行良好。但不完全在生产服务器上(相同的WAS版本(选择框在本地环境中正确构建,但在生产环境中不正确

Ajax代码如下:

$.ajax({      url: 'DisplaySplitCriteriaValuesAction',
      type:'POST',
      dataType: "xml",
      data:{ splitCriteriaType: $.trim($(this).text()) },
      success: function( xmlResponse ) {
      buildSelectBoxNoDropDown(xmlResponse, "serviceActivitiesValue", "#ServiceActivitiesValueSelectionDIV");   
      $('#serviceActivitiesValue').bind({
        change: function(){                                 
                if($(this).val() != '-1'){
                    makeDefault(this,'defValueForSA');
                }
            }
          });
         }  });
function buildSelectBoxNoDropDown(xmlData, selectBoxName, whereToDisplayedDiv){
                var selectBoxhtml = '<select name="'+selectBoxName+'" id="'+selectBoxName+'"size="12" class="select_optionsBOX">';              
                $(xmlData).find('name').each(function(){                
                    selectBoxhtml = selectBoxhtml+'<option value="'+$(this).text()+'">'+$(this).text()+'</option>';
                        });
                selectBoxhtml = selectBoxhtml+'</select>';
                $(whereToDisplayedDiv).empty();
                $(whereToDisplayedDiv).append(selectBoxhtml);
            }

我从Action类返回的示例XML结构

<SplitCriteriaValues><name>Sample SC Value 1</name><name>Sample SC Value 2</name><name>Sample SC Value 3</name></SplitCriteriaValues>

令人惊讶的是,在使用Firebug进行调试时,我看到了XML响应。当我比较dev和prod环境中的响应时,两者都匹配,但在"响应"选项卡旁边有一个名为"XML"的额外选项卡。我不确定这是否有什么区别。

从一个环境迁移到另一个环境时,有什么需要考虑的吗?任何解决这种奇怪行为的指针都会有所帮助。

感谢

我终于弄明白了这一点。尽管Firebug显示了响应,但缺少的XML选项卡意味着生产服务器永远不知道它接收的内容类型(或者认为它是简单的文本而不是XML(。快速查看响应标头也可以确认,默认情况下响应内容类型为text/plain。

所以我所要做的就是在Action类中将内容类型设置为"text/xml",这就解决了我的问题。我的本地服务器没有认为内容类型是个问题,但生产服务器认为是个问题。

谢谢。Sandeep

最新更新