Странная проблема с jQuery.get () - PullRequest
0 голосов
/ 30 марта 2012

У меня странное поведение с этим кодом:

<script type="text/javascript">
            function get() 
            {
                alert("gggg");
                jQuery.get (
                    "http://localhost:8080/c/portal/json_service", 
                    {
                        serviceClassName: "com.liferay.test.service.TrabajadorServiceUtil",
                        serviceMethodName: "findByName",
                        servletContextName: "TrabajadorPlugin-portlet",
                        serviceParameters: "[param]",
                        param : document.getElementById("nombre")
                    }
                );
            }
</script>

<div>
<form>
    <input type="text" id="nombre" value="<%=searching%>"/>
    <input type="button"  value="Submit" onClick="javascript:get()"/> 
</form>
</div>

Портал Liferay блокируется при нажатии кнопки «Отправить».Отображается всплывающее окно с сообщением «gggg», но после нажатия на него «ОК» страница блокируется.

Если я удаляю строку 'param: document.getElementById ("nombre") ", она не блокируется.

Может кто-нибудь объяснить мне, где находится ошибка, или причина этогоповедение?

Заранее спасибо,

Рафа

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

Проблема в том, что вы пытаетесь передать весь элемент DOM в качестве значения для param, что jQuery не понравится. Какой тип элемента имеет идентификатор nombre, и какое свойство этого элемента вы хотите? Если это какой-то ввод, вам, вероятно, понадобится свойство value, поэтому вы должны сделать:

param : document.getElementById("nombre").value
1 голос
/ 30 марта 2012

Обновленный ответ:

Подумав немного об этом, вам, вероятно, следует сделать это совсем по-другому. Вы отправляете данные, когда пользователь нажимает кнопку отправки, но помните, что пользователь нажимает клавишу ввода при вводе в текстовое поле ввода, форма будет отправлена, но ваш код не поймает это.

Более надежным решением было бы сделать это следующим образом:

<div>
  <form id="nombre_search">
    <input type="text" id="nombre" value="<%=searching%>"/>
    <input type="submit" value="Submit"/> 
  </form>
</div>​

<script type="text/javascript" charset="utf-8">
  $(document).ready(function() {
    $("#nombre_search").submit(function(){
      $.get("http://localhost:8080/c/portal/json_service", {
        serviceClassName: "com.liferay.test.service.TrabajadorServiceUtil",
        serviceMethodName: "findByName",
        servletContextName: "TrabajadorPlugin-portlet",
        serviceParameters: "[param]",
        param : $("#nombre").val()
      });
      return false;
    });
  });
</script>

Изменения в вашем коде:

  • Добавлен идентификатор в форму.
  • Сделал кнопку отправки кнопкой submit вместо button.
  • Размещенный код внутри $(document).ready блока.
  • Код запускается при отправке form, а не при нажатии button.

Надеюсь, это поможет, Сандро

...