Struts2 Action, вызов Jquery AJAX работает нормально и правильно отображает пользовательский интерфейс в Local Dev Env, но не на производственном сервере. - PullRequest
0 голосов
/ 30 июня 2011

Я постараюсь быть максимально точным в объяснении ситуации, с которой я сталкиваюсь. Я занимаюсь разработкой веб-приложения на основе Struts 2 и на одной из страниц использую Jquery 1.4.4 для выполнения вызовов Ajax (POST) в классах Struts2 Action и получения XML-кода, через который я перебираю и который создаю поле выбора и отображаю его. на пользовательском интерфейсе.

Этот фрагмент кода отлично работает в моей среде разработки Local WAS 6.1. Но не совсем на производственном сервере (та же версия WAS). Поле выбора правильно построено в Local env, но не в производстве.

Код 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);
            }

Пример структуры XML, которую я возвращаю из класса Action

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

Удивительным моментом является то, что я вижу ответ XML при отладке с использованием Firebug. Когда я сравниваю ответы как в среде разработки, так и в среде разработки, обе совпадают, тем не менее появляется дополнительная вкладка под названием «XML» рядом с вкладкой «ответ». Я не уверен, имеет ли это какое-то значение.

Есть ли что-то, что нужно учитывать при переходе из одной среды в другую? Любые указатели для разрешения такого странного поведения будут полезны.

Спасибо

1 Ответ

0 голосов
/ 01 июля 2011

Я наконец смог понять это. Хотя Firebug показывал ответ, отсутствующая вкладка XML означала, что производственный сервер никогда не знал тип содержимого, которое он получал (или предполагал, что это простой текст, а не XML). Быстрый просмотр заголовка ответа также подтвердил, что тип содержимого ответа по умолчанию было text / plain.

Итак, все, что мне нужно было сделать, это установить тип контента "text / xml" в классе Action, и это решило мою проблему. что мой локальный сервер не считал тип контента проблемой, а производственный.

Спасибо. Sandeep

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...