1
<form action="" method="post">
<input type="text" name="name" />
<input type="text" name="email" />
<input type="text" name=qty" />
<textarea name="message"></textarea>
<input type="submit" class="submit" onclick="formSubmit(event)" />
</form>

今、私はajaxを使用して情報をに送信していますhttp://example.com/test.php。test.phpのinputname、、、値にアクセスする方法、私はkonw、ajaxを使用しない場合は、$ _ POST['email']..を使用して渡された値にアクセスできます。emailphonemessage

$ _POST ['email']も使用したい場合はどうすればよいですか?誰かに指示された後、私は次のことをしましたが、test.phpで。それは値にアクセスしません、それの何が問題になっていますか?

var dataString =  '&name=' + jQuery('input[name=name]').val() +                 
                         '&email=' + jQuery('input[name=email]').val() +
                         '&qty=' + jQuery('input[name=qty]').val() +
                         '&message=' + jQuery('textarea[name=message]').val() +
       jQuery.ajax({
            type: "POST",
            url: "http://www.example.com/test.php",
            data: dataString,

次に、test.phpで使用しています。$ _POST ['email']、$ _ POST['qty']...機能しません。

最後のコード:class="ajax-submit"をに追加しました

jQuery('form.ajax-submit').submit(function(e) {
    var $this = jQuery(this);
    e.preventDefault();

    if ($this.find('input[name="email"]').val() == '' || $this.find('input[name="qty"]').val() == ''|| $this.find('input[name="message"]').val()=='')) {
    alert("please fill out the required fields");
    return false;
}

    jQuery.ajax({
         type: "POST",
         url: "http://example.com/test.php",
         data: $this.serialize(),
        success: function(response) {
            alert(response);
        },
        error: function() {
                alert('There was an error submitting the form');
            } 
    })
});
4

3 に答える 3

5

クエリ文字列を手動で作成しないでください。あなたが今持っているものは値を逃がさないので、簡単に壊すことができます。

代わりに、jQueryにフォームをシリアル化させてください。

$('form.ajax-submit').submit(function(e) {
    var $this = $(this);
    e.preventDefault();

    $.ajax({
        url: $this.attr('action') || window.location,
        type: $this.attr('method') || 'post',
        data: $this.serialize(),
        success: function(response) {
            alert(response);
        }
    })
});

このコードは、クラスを持つすべてのフォームajax-submitをAJAX経由で送信します。

現在の状態を修正するには、dataキーの値を変更するだけです。

var $form = $('#your_form');

if ($form.find('input[name="email"]').val() == '' || $form.find('input[name="name"]').val() == '') {
    return false;
}

jQuery.ajax({
    type: "POST",
    url: "http://www.example.com/test.php",
    data: $form.serialize(),
    ...
于 2012-12-17T10:02:08.940 に答える
1

このように使用するだけです。

jQuery('form').submit(function(e){
   e.preventDefault();
    jQuery.ajax({
        type: "POST",
        url: "http://www.example.com/test.php",
        data: $('form').serialize(),
        success: function(data){
          alert(data);
        },
        error:function(){
          alert('error');
        }
});
于 2012-12-17T10:03:02.410 に答える
0

作業を行うjQueryプラグインがあります:http:
//malsup.com/jquery/form/

以前の方法でフォームを送信しただけなので、すべてのAJAXが自動的に機能します。

于 2012-12-17T10:06:03.433 に答える