2013-08-28 61 views
0

我序列化我的表單數據,記錄它,然後將它發送到PHP文件,它在哪裏返回null。AJAX沒有發送任何東西到PHP​​文件

的jQuery:

$('#preregister').submit(function() { 


    if(checkemail("prereg_email")) { 

     var data; 

     data = $(this).serialize(); 
     console.log(data); 

     $('#imageloader').fadeIn(); 
     $.ajax({ 
      url: '/docs/adduser.php', 
      data: data, 
      processData: false, 
      contentType: false, 
      type: 'POST', 
      success: function (data) { 
       //console.log(data); //returns a string of the data. 
       var data = JSON.parse(data); //parses the string into an object. 
       console.log(data); //logs the object. 
       if (data.error) { alert(data.message); } 
      } 

     }); 

    } 

     return false; 
    }); 

PHP:

<?php 

    $Return = array(); 
    $Return["in"] = $_POST; 
    $Return["error"] = false; 
    $Return["message"] = "Nothing has happened."; 

    /* EMAIL */ 
    $in_email = urldecode($_POST["prereg_email"]); 
    $Return["in_email"] = $in_email; 

    if (!filter_var($in_email, FILTER_VALIDATE_EMAIL)) { 

     $Return["error"] = true; 
     $Return["message"] = "Enter a valid email."; 

    } 

    if (!$in_email) { 

     $Return["error"] = true; 
     $Return["message"] = "Enter an email."; 

    } 


    str_replace('\\/', '/', json_encode($Return)); 
    echo json_encode($Return); 

?> 

當數據回來,它說:

Object {in: Array[0], error: true, message: "Enter an email.", in_email: ""}

這是奇怪的,因爲之前,我發送數據,我把它記錄下來,它寫道:

prereg_email=rbross3%40gmail.com

所以......我應該至少得到$Return["prereg_email"]對不對?

+0

你把'session_start();'放在'adduser.php'文件的頂部嗎? – DanielX2010

+0

如果你這樣做了,你的'FILTER_VALIDATE_EMAIL'可能不會被驗證,因爲你在'@' – DanielX2010

+0

的地方有一個'%40',你可以向我們發送你從這個console.log(data)得到的結果。 – mbouzahir

回答

1

我認爲這是因爲您正在使用processData: false,嘗試沒有它。 .serialize()已經返回一個字符串,所以你不需要processData:false,