jQuery 아약스 양식 제출

I have a 형 이름이 '' 러더프로두스포르마 및 정의되지 않은 수의 투입물.

I want to do 함정이거나 제크리스제) 나 아약스 또는 전화를 하는 그런 건 아무것도 페이징할 및 전송할 수 있는 모든 형태의 '' 러더프로두스포르마 투입물 따라 ajax .

예를 들어, 한 가지 방법은 내가 뭔가를 약간만이라도 같은

jQuery.get("myurl",
          {action : document.orderproductForm.action.value,
           cartproductid : document.orderproductForm.cartproductid.value,
           productid : document.orderproductForm.productid.value,
           ...

그러나 내가 정확히 모르는 모든 양식 투입물. 모든 양식 투입물 보내라고 아니하였으매 기능이나 생각하신거야 있나요?

이는 단순한 참조:

// this is the id of the form
$("#idForm").submit(function(e) {

    e.preventDefault(); // avoid to execute the actual submit of the form.

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: url,
           data: form.serialize(), // serializes the form's elements.
           success: function(data)
           {
               alert(data); // show response from the php script.
           }
         });

});

발달장애인지원법은 도움이 됩니다.

해설 (20)
해결책

아이아스포르마 아이아스서브미스 기능을 사용할 수 있습니다 / 는 아약스 양식 플러그인에는 또는 직렬화할 기능을 포함한다.

  • 아이아스포르마 *:
$("#theForm").ajaxForm({url: 'server.php', type: 'post'})

또는

$("#theForm").ajaxSubmit({url: 'server.php', type: 'post'})

아이아스포르마 제출됩니다 버튼을 누를 때 보낼 예정이다. 아이아스서브미스 sends 지원했다.

  • 직렬화할 *:
$.get('server.php?' + $('#theForm').serialize())

$.post('server.php', $('#theForm').serialize())

아약스는 이곳에서 직렬화하지 문서용으로.

해설 (9)

또 다른 유사한 속성을 사용하여 솔루션이므로 양식에 정의되어 요소:





<script type="text/javascript">
    var frm = $('#contactForm1');

    frm.submit(function (e) {

        e.preventDefault();

        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                console.log('Submission was successful.');
                console.log(data);
            },
            error: function (data) {
                console.log('An error occurred.');
                console.log(data);
            },
        });
    });
</script>
해설 (4)

몇 가지 점을 유념해야 합니다.

1. 방법에는 여러 가지가 있습니다 양식 제출

  • submit 버튼을 사용하여
  • enter 키를 눌러
  • 트리거함으로써 이벤트 JavaScript 로 제출
  • 가능성이 더 디바이스이거나 따라 향후 디바이스입니다.

따라서 이 아닌 이벤트 , 폼 귀의한다면 해야 바인딩하지 버튼 클릭 > 이벤트. 그러면 우리의 모든 장치와 보조 기술의 현재와 미래에 대한 코드를 사용해야 합니다.

2. 게이아스

Javascript 활성화됨 없을 수 있습니다. A 게이아스 패턴이 优秀 임무야, 여기서 우리가 제어할 수 있지만, 이 경우 남겨두십시오 서브미스터블 가볍게 양식 JavaScript 를 사용하여 JavaScript 작동하지 않습니다.

저희는 인도되지못하였으리라 당기십시오 uirl 및 방법, 만일 양식에서 HTML 변경, 우리는 # 39, JavaScript 업데이트하려면 don& 필요한 건 아니다.

3. 눈에 띄지 않는 JavaScript

        • 에번트리프레벤트데포트 () 는 거짓값 반품하십시오 대신 사용할 수 있기 때문에 거품이 백업하도록 위해 이 행사를 좋습니다. 이렇게 하면 다른 스크립트 이벤트, 예를 들어 분석 스크립트에만 타이법으로요 꽂으십시오 모니터링에만 수 있는 사용자 상호 작용.
  • 속도용 *

우리는 우리의 스크립트입니다 삽입하는 대신 외부 스크립트를 사용하는 것이 이상적입니다 인라인. We can https://partner. microsoft. 이 머리에 섹선에서 스크립트를 사용하여 페이지의 링크를 페이지 하단에 있는 태그 또는 그 속도에 대한. 스크립트는 사용자가 아닌 경험하십시오 조용히 강화하십시오 get in the way.

  • 코드*의

그래 양실장 가정하고 위의 모든 이벤트 및 처리할 수 있는 강한 하려면 제출됩니다 통해 이를 아약스 (a 게이아스 패턴), 할 수 있는 이 같은 일이.

$(function() {
  $('form.my_form').submit(function(event) {
    event.preventDefault(); // Prevent the form from submitting via the browser
    var form = $(this);
    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      data: form.serialize()
    }).done(function(data) {
      // Optionally alert the user of success here...
    }).fail(function(data) {
      // Optionally alert the user of an error here...
    });
  });
});

양식 제출 등 때마다 다음과 같은 항목을 사용하여 JavaScript 를 통해 수동으로 트리거하지 수 있습니다.

$(function() {
  $('form.my_form').trigger('submit');
});
  • Edit:*

이를 위해 최근 및 됐지 내가 쓰는 플러그인에는 했다.

(function($) {
  $.fn.autosubmit = function() {
    this.submit(function(event) {
      event.preventDefault();
      var form = $(this);
      $.ajax({
        type: form.attr('method'),
        url: form.attr('action'),
        data: form.serialize()
      }).done(function(data) {
        // Optionally alert the user of success here...
      }).fail(function(data) {
        // Optionally alert the user of an error here...
      });
    });
    return this;
  }
})(jQuery)

이 양식에 데이터 오토서브미스 추가하기에서는 태그와 속성을 재동기화할 수 있습니다.

HTML



JS

$(function() {
  $('form[data-autosubmit]').autosubmit();
});
해설 (9)
    • 포르마다타 사용할 수도 있습니다. (단, IE 에서 사용할 수 있습니다).
var formData = new FormData(document.getElementsByName('yourForm')[0]);// yourForm: form selector        
$.ajax({
    type: "POST",
    url: "yourURL",// where you wanna post
    data: formData,
    processData: false,
    contentType: false,
    error: function(jqXHR, textStatus, errorMessage) {
        console.log(errorMessage); // Optional
    },
    success: function(data) {console.log(data)} 
});

포르마다타 사용하는 방법입니다.

해설 (4)

간단한 버전 (보내지 않는 이미지)


...

<script>
    (function($){
        $("body").on("submit", ".my-form", function(e){
            e.preventDefault();
            var form = $(e.target);
            $.post( form.attr("action"), form.serialize(), function(res){
                console.log(res);
            });
        });
    )(jQuery);
</script>

복사, 붙여넣기 아이아스리피카션 양식의 양식 또는 모든 페이지에

It 는 수정된 버전의 [Alfrekjv& # 39 의] (https://stackoverflow.com/users/804978/alfrekjv) 오토메이티드

  • It 협력합니다 = 1.3.2 &gt 포함한다.
  • 전에 이 문서가 바로 실행할 수 있습니다.
  • 그래도 여전히 양식 및 제거 및 추가해야 할 수 있습니다.
  • Post 것 같은 위치에 지정되어 일반 양식, s # 39 는 form& &quot action";; 속성

JavaScript

jQuery(document).submit(function(e){
    var form = jQuery(e.target);
    if(form.is("#form-id")){ // check if this is the form that you want (delete this check to apply this to all forms)
        e.preventDefault();
        jQuery.ajax({
            type: "POST",
            url: form.attr("action"), 
            data: form.serialize(), // serializes the form's elements.
            success: function(data) {
                console.log(data); // show response from the php script. (use the developer toolbar console, firefox firebug or chrome inspector console)
            }
        });
    }
});

내가 하고 싶은 것이 너무 Alfrekjv& 편집하십시오, s # 39 에서 이 같은 질문에 답할 수 있도록 별도의 게시물로의 정보의 했다.

예를 들어, 곷떒 보내지 않는 파일을 지원하지 않는 버튼 클릭 (제출) 버튼을 등) 가 있지만, 이 때문에 ajax 요청을 백업이었습니다 버튼을 클릭하면 해당 값을 양식 데이터로 전송되지 않습니다.

대신 실제 버튼 클릭 > 제출됩니다 캡처하기 곷떒 지원할 수 있습니다.

jQuery(document).click(function(e){
    var self = jQuery(e.target);
    if(self.is("#form-id input[type=submit], #form-id input[type=button], #form-id button")){
        e.preventDefault();
        var form = self.closest('form'), formdata = form.serialize();
        //add the clicked button to the form data
        if(self.attr('name')){
            formdata += (formdata!=='')? '&':'';
            formdata += self.attr('name') + '=' + ((self.is('button'))? self.html(): self.val());
        }
        jQuery.ajax({
            type: "POST",
            url: form.attr("action"), 
            data: formdata, 
            success: function(data) {
                console.log(data);
            }
        });
    }
});

서버 측에서 [감지할 ajax 요청을] 수 있습니다 (http://davidwalsh.name/detect-ajax) 에 있는 '세트' 이 헤더입니다 HTTP_X_REQUESTED_WITH jquery php 용

PHP

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    //is ajax
}
해설 (2)

이 코드를 가지고도 작동됨 파일 입력

$(document).on("submit", "form", function(event)
{
    event.preventDefault();        
    $.ajax({
        url: $(this).attr("action"),
        type: $(this).attr("method"),
        dataType: "JSON",
        data: new FormData(this),
        processData: false,
        contentType: false,
        success: function (data, status)
        {

        },
        error: function (xhr, desc, err)
        {

        }
    });        
});
해설 (3)

정말 좋아했잖아 이 오토메이티드 에서 슈퍼루미나리, 특히 이 솔루션을 랩된 운행에서어떠한 그는 a 플러그인에는 포함한다. 그래서 덕분에 슈퍼루미나리 매우 유용한 대답. 저의 경우는 있지만, 내가 바라는 오류 및 플러그인에는 허용하지 않는 정의하십시오 성공을 통해 이벤트 핸들러도 옵션뿐 플러그인에는 때 이 초기화되었는지.

여기서는 내가 지었지.

;(function(defaults, $, undefined) {
    var getSubmitHandler = function(onsubmit, success, error) {
        return function(event) {
            if (typeof onsubmit === 'function') {
                onsubmit.call(this, event);
            }
            var form = $(this);
            $.ajax({
                type: form.attr('method'),
                url: form.attr('action'),
                data: form.serialize()
            }).done(function() {
                if (typeof success === 'function') {
                    success.apply(this, arguments);
                }
            }).fail(function() {
                if (typeof error === 'function') {
                    error.apply(this, arguments);
                }
            });
            event.preventDefault();
        };
    };
    $.fn.extend({
        // Usage:
        // jQuery(selector).ajaxForm({ 
        //                              onsubmit:function() {},
        //                              success:function() {}, 
        //                              error: function() {} 
        //                           });
        ajaxForm : function(options) {
            options = $.extend({}, defaults, options);
            return $(this).each(function() {
                $(this).submit(getSubmitHandler(options['onsubmit'], options['success'], options['error']));
            });
        }
    });
})({}, jQuery);

나에게 이 플러그인을 사용하면 매우 쉽게 ajaxify&quot "; , 론스베미스 페이지의 html 양식 제공하십시오 성공 및 오류 이벤트 핸들러도 사용자에게 피드백 구현할 수 있는 상태의 양식 제출. 이 플러그인에는 다음과 같이 사용할 수 있도록 했다.

 $('form').ajaxForm({
      onsubmit: function(event) {
          // User submitted the form
      },
      success: function(data, textStatus, jqXHR) {
          // The form was successfully submitted
      },
      error: function(jqXHR, textStatus, errorThrown) {
          // The submit action failed
      }
 });
        • 참고로 받을 만한 성공을 오류 및 이벤트 핸들러도 같은 인수만 jQuery 의 ajax 의 해당 이벤트를 수신한다는 메서드입니다.
해설 (0)

나는 attaboy 대해 다음과 같이 봐요.

formSubmit('#login-form', '/api/user/login', '/members/');

여기서

function formSubmit(form, url, target) {
    $(form).submit(function(event) {
        $.post(url, $(form).serialize())
            .done(function(res) {
                if (res.success) {
                    window.location = target;
                }
                else {
                    alert(res.error);
                }
            })
            .fail(function(res) {
                alert("Server Error: " + res.status + " " + res.statusText);

            })
        event.preventDefault();
    });
}

39, & # 39 이 포스트에 url& 가정합니다. ajax 의 형태로 '을 반환하는지 {성공을 거두었다. # 39, 내 오류, error:& 거짓값 display&} '# 39.

이 원하는 대로 변경할 수 있습니다. 스니핏 무료로 사용할 수 있는 것.

해설 (1)

jquery 는 단지 양식 제출 양식을 사용하여 AJAX , 양식 제출) 버튼을 누르면 id

제발 단계를

1 단계 - ID 필드 양식 태그를 있어야 합니다.


.....

버튼 클릭 수 있는 것입니다.

Save

2 단계 - 이벤트 jQuery 에 제출할 수 있는 양식 제출. json 의 이름 아래 코드를 HTML 요소 요청에 저희에게는힘과 준비하고 있다.

$("#submitForm").submit(function(e) {
    e.preventDefault();
    var frm = $("#submitForm");
    var data = {};
    $.each(this, function(i, v){
        var input = $(v);
        data[input.attr("name")] = input.val();
        delete data["undefined"];
    });
    $.ajax({
        contentType:"application/json; charset=utf-8",
        type:frm.attr("method"),
        url:frm.attr("action"),
        dataType:'json',
        data:JSON.stringify(data),
        success:function(data) {
            alert(data.message);
        }
    });
});

아래 링크를 클릭하여 실시간 데모

[제출 방법을 사용하여 양식을 jQuery 아약스?] [1]

[1]: https://www.youtube.com/watch? v = Ln6A5Koo7Bc

해설 (0)

'가장' 사용하는 것이 좋습니다

$('table+table form').closest('tr').filter(':not(:last-child)').submit(function (ev, frm) {
        frm = $(ev.target).closest('form');
        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                alert(data);
            }
        })
        ev.preventDefault();
    });
해설 (0)

여러 포르마다타 피하기 위해 sends:

39, 이벤트, 양식 서브미스트 don& 해제 전에 다시 제출됩니다 빼놓을 수 없다.

사용자는 두 번 이상 잊어버린 물건 또는 함수 호출 제출, 어쩌면 그는 모함이야 검증 오류.

 $("#idForm").unbind().submit( function(e) {
  ....
해설 (0)

, () - Re form*.serializ you& 경우 # 39 를 사용하여 다음과 같은 이름은 각 양식의 요소를 전달자로써 합니다.

<input id="firstName" name="firstName" ...

그리고 다음과 같은 질문을 되돌려줍니다 시리얼화된 양식

firstName=Chris&lastName=Halcrow ...
해설 (0)

제출됩니다 아래에 있는 이 같은 기능을 사용할 수 있습니다.

HTML 양식


    <input type="text" name="name" id="name" >
    <textarea name="text" id="message" placeholder="Write something to us"> 

jQuery 기능:

<script>
    function formSubmit(){
        var name = document.getElementById("name").value;
        var message = document.getElementById("message").value;
        var dataString = 'name='+ name + '&message=' + message;
        jQuery.ajax({
            url: "submit.php",
            data: dataString,
            type: "POST",
            success: function(data){
                $("#myForm").html(data);
            },
            error: function (){}
        });
    return true;
    }
</script>

자세한 내용 및 샘플링합니다 vmware. com/products/vmmark/overview. http://www.spiderscode.com/simple-ajax-contact-form/

해설 (0)

39 의 질문에 대한 답을 OP& 아니다.

하지만 경우에 사용할 경우, DOM, 정적 형 can& t # 39 이 같은 시도하시겠습니까 수도 있습니다.

var $form = $('').append(
    $('<input/>', {name: 'username'}).val('John Doe'),
    $('<input/>', {name: 'user_id'}).val('john.1234')
);

$.ajax({
    url: 'api/user/search',
    type: 'POST',
    contentType: 'application/x-www-form-urlencoded',
    data: $form.serialize(),
    success: function(data, textStatus, jqXHR) {
        console.info(data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        var errorMessage = jqXHR.responseText;
        if (errorMessage.length > 0) {
            alert(errorMessage);
        }
    }
});
해설 (0)

그냥 친화적임 객체여야 수 있음을 상기시켜 주는 '데이터', 고쳐주렴:

"' $ (& # 39, 양식, # # 39 foo&) 오서브미스 (함수 () { $ 지아이아스 ({ url: # 39, & # 39 http://foo.bar/some-ajax-script&;; 유형: # 39, & # 39 POST&;; 데이터 형식: # 39, & # 39 json&;; 데이터: {

39, & # 39, foo&. # 39, & # 39 some-foo&;;

39, & # 39, bar&. # 39, & # 39 some-bar&.

} 지아우와이스 (함수 (데이터) {}) 콘솔드로그 (데이터). }).

반품하십시오 거짓값. }). "'

해설 (0)

Jquery 는 '일' 관련 질문, 이젠 알아, JS ES6 있는 것들이 훨씬 간편해집니다. ',' 오토메이티드 추가할 수 있을 줄 알았는데 순수 javascript 없기 때문에 간단한 해결책을 내 의견으로는 '이 있으며, 순수 javascript', ' () 의 API 를 사용하여 보다 깔끔할거야 페치할. 이 방법은 첨단 네트워크 구축 요청. 네 경우엔 이미 가지고 있기 때문에 우리는 이를 이용하여 우리의 요청에 구축하십시오 양식 요소를 쉽게 할 수 있습니다.

const form = document.forms["orderproductForm"];
const formInputs = form.getElementsByTagName("input"); 
let formData = new FormData(); 
for (let input of formInputs) {
    formData.append(input.name, input.value); 
}

fetch(form.action,
    {
        method: form.method,
        body: formData
    })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.log(error.message))
    .finally(() => console.log("Done"));
해설 (0)

또한 이벤트 # 39 의 there& 제출됩니다 트리거될 수 있는데, 이렇게 $ (&quot, # form_id") 오서브미스 (). # 39 이 방법을 사용하여 표현할 경우, d you& 양식이 잘 HTML 상태다. # 39; d 그냥 you& 읽어들입니다 페이지이므로 함께 물건을 채우는 양식 투입물 어졌다면 매입옵션 오서브미스 (). # 39 에 정의된 메서드를 사용하여 it&, ll, 액션, s, t need to # 39 form& 선언, 그러니까 javascript don& # 39 를 복사합니다.

[예] (http://docs.jquery.com/Events/submit # 예)

해설 (3)