2011-01-17 2 views
0

Я получил эту петлю в файле JspJQuery автозаполнения лишние пробелы

<% for (int i = 0; i < length; i++) 
       { 
        for(int j = 0; j < width; j++) 
        { 
         element = MAP_LIST[j][i]; 
         if (element.equals("A")) 
         {} else if (j == width-1 && i == length-1){ 
         %> 
         <%=element%><%} 
         else 
         { 
         %> 
         <%=element%>,<%} 
        } 
       } 
%> 

который получает мне список CSV из базы данных оракула для моего автозаполнения текстового поля с помощью JQuery

function Mapsheets(type,nomos) 
{ 
    $(function() { 
     var f_data; 

     $.get('/gaec_web/MapSheets.jsp',{'datasrc-select':datasource, 'type_1': type, 'nomos': nomos}, function(data){ 
      f_data = data.split(','); 
     $("#fx_no").autocomplete({ 
      source: f_data, 
      minLength: 2 
     }); 
     }); 
      }); 
} 

все работает как очарование, я набираю первые 2 символа и всплывает автозаполнение, отображает все, что нужно, и когда я пытаюсь выбрать значение, я получаю значение с несколькими (5) дополнительными пробелами в хвосте. И затем, когда он будет отправлен, он терпит неудачу, потому что он не соответствует указанному имени карты. результаты выглядят так:

"  320-197" 

Так что же вызывает это? если я запустить страницу JSP в одиночку и получить нормальные результаты, например

372-146, 376-146, 372-149, 368-149, 376-149, 380-149, 380-152, 376-152, 372-152, 368-152, 368-155, 376-155, 372-155, 380-155, 368-158, 380-158, 376-158, 372-158 

заранее спасибо

+0

Когда вы делаете «источник просмотра» на странице, когда он попадает в браузер, как выглядит этот список значений? Эти пробелы не будут обрезаны для вас, просто называя «split()» - вам нужно обрезать их самостоятельно. – Pointy

ответ

2

Я никогда не использовал JSP, но я предполагаю, что причина дополнительных пространств отступов вы используете внутри для петля

    {} else if (j == width-1 && i == length-1){ 
        %> 
#there are extra space<%=element%><%} 
        else 
        { 
        %> 
        <%=element%>,<%} 
       } 

вы должны поместить код таким образом, и, возможно, пробелы будут игнорироваться:

    {} else if (j == width-1 && i == length-1){ 
        %><%=element%><%} 
        else 
        { 
        %><%=element%>,<%} 
       } 
+0

btw Извините, если это не сработает, но у меня была аналогичная проблема в php, и я решил это таким образом. – javiertoledos

+0

Это правильно. OP по сути неправильно использует JSP вместо Servlet для испускания не HTML-данных. Поскольку JSP является технологией шаблона/представления, все пробелы вне * scriptlets * также печатаются. Связанный с этим вопрос: http://stackoverflow.com/questions/4112686/update-current-page-with-a-servlet – BalusC

+0

Интересный родственный вопрос и ответ. Я только что покинул офис, и я иду домой. Хотя из любопытства я загружу сервер и посмотрю, получаю ли я правильные результаты. В основном я почти не знал о веб-приложениях и сервисах. Меня попросили добавить автозаполнения в старый проект, и я просто подражаю тому, что уже нашел. – elasticrash

0

Я никогда не использовал JSP. но будет ли это жизнеспособным вариантом для вывода вашего массива как json encoded? jQuery может легко проанализировать массив, переданный как json_encoded.

Я искал для json_encode эквивалент JSP и дал мне эту ссылку. What is the JSP equivalent to json_encode (in PHP)?

В вашем javascript затем вы используете $ .getJSON (url, [data], [callback]) так же, как и раньше. за исключением того, что теперь параметр данных функции обратного вызова содержит json-декодированный массив, ergo ваш предыдущий нормальный массив, но затем в javascript-форме.

Просто укажите данные var для источника для автозаполнения.

Смежные вопросы