загрузка страницы с помощью jquery ajax

Я хочу загрузить часть страницы с помощью JQuery ajax.

url — это запрос действия Struts2.

$("#accountListDiv").html(ajax_load).load(url, $("#testform").serializeArray(),   function(){
    //alert('done');
});

//serializeArray и сериализация не работают. (Возможно, действие struts действительно ожидает данные в том формате, в котором они генерируются этими функциями. Будет полезно получить больше информации по этому вопросу).

В случае обычного HTTP-запроса всем переменным в действии Struts2 будут автоматически присвоены значения, введенные на странице JSP.

Я хочу сделать то же самое при использовании Ajax. Я не хочу явно передавать каждый параметр в такой форме.

$("#indexDiv").html(ajax_load).load(url, "rateTypeId4Index="+rateTypeId4Index, function(){
    xyz();
});

Я знаю, что для struts есть плагин Dojo, но он устарел. И если я смогу решить эту проблему с помощью JQuery, то мне этого более чем достаточно.

(Я ищу решение, которое не требует использования плагина JQuery-struts).


person JProgrammer    schedule 23.04.2012    source источник


Ответы (3)


1 У вас проблема с отправкой запроса, а не в части Struts2. Попробуйте установить карту параметров вместо строки.

$("#accountListDiv").html(ajax_load).load(url, {'param1':value1, 'param2':value2},   function(){
    //alert('done');
});

2 Если вы хотите отправить форму с помощью ajax, используйте плагин Jquery Form.

  $("#testform").ajaxSubmit({
      type: "POST",
      success: function(data) {
        $('#accountListDiv').html(data);
        alert('Yeh-ha!');        
      },
      error: function(request, textStatus, errorThrown) {
        alert('Oops');
      }}
  );
person Vasily Komarov    schedule 24.04.2012
comment
Ваше первое предложение верно, но я не хочу этого делать, так как на странице большое количество параметров. Второй обновляет страницу (также не обновляет div testform). Может я не умею правильно вставлять. В любом случае, я буду стараться и держать вас в курсе. - person JProgrammer; 25.04.2012
comment
похоже, что ваше первое решение - единственный способ передать несколько параметров в приложение struts с помощью JQuery ajax. - person JProgrammer; 10.07.2012

Я полагаю, вы имеете в виду использовать serialize, а не serializeArray

person Explosion Pills    schedule 23.04.2012
comment
Я пытался использовать его, но это не сработало. Вот почему я также хочу знать, как struts2 анализирует входные данные и соответственно устанавливает значение каждой переменной. - person JProgrammer; 24.04.2012

Я использовал следующее с JQuery и Struts2:

<script>

    function bindDivFormSubmission(theDiv) {

        /* get the form from the div and unbind it */
        var theForm = theDiv.find('form');
        theForm.unbind();

         /* attach a submit handler to the form */
        theForm.submit(function(event) {

            /* stop form from submitting normally */
            event.preventDefault(); 

            var url = theForm.attr( 'action' ),
                formData = theForm.serialize();

            /* Send the data using post and put the results in a div */
            $.post( url, formData,
              function( data ) {
                  theDiv.html( data );
                  bindDivFormSubmission(theDiv);
              }
            );

        });

    }

    var accountListDiv = $("#accountListDiv");

    bindDivFormSubmission(accountListDiv);

</script>

Вы можете заметить, что он рекурсивно вызывает "bindDivFormSubmission(theDiv);" после замены div. Это произошло потому, что в моем использовании div заменяется другой формой, которую необходимо связать.

person rees    schedule 29.04.2012