Отправка формы с использованием библиотеки jquery ajax в Asp.NET 2.0 - PullRequest
0 голосов
/ 17 мая 2011

Привет, ребята, и спасибо за вашу помощь, как всегда.

Я застрял в Asp.NET 2.0 и пытаюсь выполнить отправку формы с использованием библиотеки jquery.

Пока что я получил эффект без обновления, используя метод jquery post:

<script type="text/javascript">

    $(document).ready(function() 
    {


        $("#btnGuardar").click(function()    
        {   
            //post
            $.post("contacto.aspx", {   txtRaz: $("#txtRaz").val(), 
                                        txtDir: $("#txtDir").val(), 
                                        txtEmail: $("#txtEmail").val(), 
                                        txtTel: $("#txtTel").val(), 
                                        txtConsulta: $("#txtConsulta").val() },                                         
                                        function (response) {
                                        r=response+'';                                         
                                        var f=$('#pEnvioCorreo'); 
                                        if (r == '0'){
                        f.css("display",'block');
                    } 
                                        else if (r == '1'){
                        f.css("display",'block');
                                            f.innerHTML='Error en el envio';
                    }
                                        else { 
                        f.innerHTML='Verifique los campos obligatorios';
                    }                                        
       });
           return false;
           //post 

        })//click    


    });//ready

</script>

Когда выполняется отправка, я затем ловлю поля формы в событии Load (No IsPostback Veryfing) страницы и записываю вывод в соответствии с ответом, заканчиваю его и затем ловлю значение, чтобы разрешить одно или другое случиться на клиенте.

Моя попытка использовать метод ajax выглядит следующим образом:

     //metodo 2
     $.ajax({
            type: "POST",
            url: "contacto.aspx",             
            contentType: "application/json; charset=utf-8",
            data:  {   
            txtRaz: $("#txtRaz").val(), 
            txtDir: $("#txtDir").val(), 
            txtEmail: $("#txtEmail").val(), 
            txtTel: $("#txtTel").val(), 
            txtConsulta: $("#txtConsulta").val() 
    },               
            dataType: "json",
            success: function(response) {
            r=response+'';                                         
                                        var f=$('#pEnvioCorreo'); 
                                        if (r == '0'){
                        f.css("display",'block');
                    } 
                                        else if (r == '1'){
                        f.css("display",'block');
                                            f.innerHTML='Error en el envio';
                    }
                                        else { 
                        f.innerHTML='Verifique los campos obligatorios';
                    }        
            }
        });
  //fin metodo 2

Это не работает, так как я отправляю свою форму, обновляя всю страницу, а это не то, что я хочу.

Не могли бы вы дать мне понимание этого? и / или есть ли лучший способ сделать это?.

Спасибо за вашу помощь.


Я заставил это работать, и я отправляю это для будущей ссылки:

Метод $ .post работает, как я объяснил выше.

Метод $ .ajax у меня не работал, потому что у меня неверный параметр данных.

Два способа сделать это правильно:

1) Установка правильного синтаксиса для параметра данных, обратите внимание на следующий формат для данных

data:"{'hdT': '" + $("#hdT").val() + "','txtRaz': '" + $("#txtRaz").val() + "','txtEmail': '" + $("#txtEmail").val() + "','txtTel': '" + $("#txtTel").val() + "','txtConsulta': '" + $("#txtConsulta").val() + "'}"

2) Использование плагина JSON для преобразования данных data: параметров в формат JSON:

var thing={hdT: $("#hdT").val(),txtRaz: $("#txtRaz").val(),txtEmail: $("#txtEmail").val(),txtTel: $("#txtTel").val(),txtConsulta: $("#txtConsulta").val()};

И данные должны передаваться для параметра следующим образом:

data: $.toJSON(thing)

Как только это будет сделано, PageMethod должен быть установлен в коде, и ссылка ScriptManager не требуется, потому что jquery обрабатывает весь процесс.

Для передачи информации, поступающей из объекта данных в PageMethod, каждое свойство должно быть параметром метода.

<WebMethod()> _
Public Shared Function ProcesaEnvio(ByVal txtRaz As String) As String

        Return "Returns:" & txtRaz

End Function

Как только там будет достигнут необходимый процесс.

1 Ответ

0 голосов
/ 17 мая 2011

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

Это очень хорошее руководство по созданию веб-методов для обработки данных формы ajax:

http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

Также обратите внимание на плагин JSON для jQuery, который предоставляет простые способы преобразования в JSON и обратно.

Надеюсь, это поможет.

...