JQuery Ajax isteği veri erişemez, boş bir dizi döndürür

3 Cevap php

Ben fancybox plugin giriş örnek üzerinden adlandırılan bir form var.

İşte var kodu:

Form:

<form method="post" action="" id="events_form">
    <p class="clearfix"><label for="Name">Name:</label> <input type="text" name="Name" id="Name" /></p>
    <p class="clearfix"><label for="Company">Company:</label> <input type="text" name="Company" id="Company" /></p>
    <p class="clearfix"><label for="Email">Email:</label> <input type="text" name="Email" id="Email" /></p>
    <p class="clearfix"><label for="Tel">Tel:</label> <input type="text" name="Tel" id="Tel"/></p>
    <p class="clearfix"><input type="submit" value="Submit details" /></p>
 </form>

JavaScript / jQuery:

<script type="text/javascript">
    $(document).ready(function(){
        $("#event_trigger").fancybox({
            'padding'  : 0,
            'scrolling'  : 'no',
            'titleShow'  : false,
        });

        $("#events_form").bind("submit", function() {
            $.fancybox.showActivity();

            $.ajax({
                type  : "POST",
                cache : false,
                url  : "/events/index.php",
                data  : $(this).serializeArray(),
                success: function(data) {
                    $.fancybox(data);
                }
            });
            return false;
        });
    });
</script>

PHP dosyası döner ve boş bir dizi. Ancak Firebug Mesajı sekmesi form verilerini görüntüler.

Ayrıca, fark ettim ki ben yaparsam

print_r($_SERVER['REQUEST_METHOD'])

Bu döner Ben POST belirtilmiş olsa bile, GET.

3 Cevap

$(this).serializeArray()

Form CSS id adı ile (# my-form-kimliği, bu örnekte) bu gibi:

$("#my-form-ID").serializeArray()

O çözer umuyoruz. Bu benim için çalıştı. ,-D

$.ajax parametresi data bir nesne veya bir dize olmasını bekler.

http://api.jquery.com/jQuery.ajax/ verilerine aşağı kaydırın.

Eğer bir nesne içinde data sarın mesela data: {array:$(this).serializeArray()} işe yarayabilir. Ben o düşünceden% 100 emin değilim.

Gönderdiğiniz bir form üzerinde bir AJAX isteği yapıyoruz.

AJAX isteği AJAX isteği dönecektir için herhangi bir şans var önce form teslim olacağı bir tehlike var (ben zaten, tavsiye etmem) senkron sürece.

Paralel olarak:

$(this).serializeArray()

$ (This) Eğer bağlama yöntemi seçmiş form elemanı bahsetmektedir. Ben bu amaçlanmaktadır varsayarak yaşıyorum