2010-02-17 186 views
0

我有一個通過fancybox plugin登錄示例調用的窗體。無法從jQuery Ajax請求訪問數據,返回空數組

這裏是我的代碼:

形式:

<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文件的回報和空數組。但是Firebug發佈標籤顯示錶單數據。

另外,我注意到,如果我做

print_r($_SERVER['REQUEST_METHOD']) 

這將返回GET,即使我已經指定POST。

+0

您可以嘗試使用$ .post()函數 – 2010-02-17 11:58:41

+0

我試過使用$ .post(),問題依然不幸 – Oldie 2010-02-17 12:02:59

+0

爲什麼不使用[jQuery表單插件](http://www.malsup。 COM/jQuery的/表格)?它會讓你的工作更輕鬆。 – 2010-02-17 13:10:00

回答

0

$.ajax預計參數data是一個對象或字符串。

http://api.jquery.com/jQuery.ajax/向下滾動到數據。

如果您將data包裝在一個對象中,例如data: {array:$(this).serializeArray()}它可能工作。儘管如此,我並不十分確定。

+0

嗨,謝謝你的回答,不幸的是包裝數據沒有工作。 – Oldie 2010-02-17 12:18:30

+0

如果您將textStatus添加到您的成功功能中,您會得到什麼'function(data,textStatus){alert(textStatus);}'? – Nalum 2010-02-17 12:32:26

+0

多數民衆贊成在返回「成功」,但仍是一個空陣列。 – Oldie 2010-02-17 12:40:18

0

您正在對錶單提交進行AJAX請求。

除非AJAX請求是同步的(我不推薦這麼做),否則在AJAX請求返回之前有可能會提交表單。

在行:

$(this).serializeArray() 

$(本)指的是已在綁定方法所選擇的形式的元素。我假設這是爲了

+0

嗨,是的,這是打算。我從http://fancybox.net/blog上的示例中獲得了此代碼,並且該示例正常工作。 – Oldie 2010-02-17 12:15:30

1
$(this).serializeArray() 

與形式CSS ID(#我的外形ID,在這個例子中)這樣的名字:

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

希望能解決它。它爲我工作。 ; -D