2012-08-06 33 views
0

我使用AJAX(jQuery)將表單提交給PHP腳本。

這裏是JavaScript:

// Validate form fields 
$(function() { 
    //Check to see if email is not empty 
    if (email == "") { 
     $("label#email_error").show(); 
     $("input#email").focus(); 
     return false; 
    } 

    var dataString = 'firstname=' + firstname + '&email=' + email + '&lastname=' + lastname; 

    $.ajax({ 
     type: "POST", 
     url: "/", 
     data: dataString, 
     success: function() { 
      var counter = <?php echo($counter['count'] + 1); ?> 

      counter = numberWithCommas(counter); 

      $('#counter').html(counter); 
      $('#contact_form').html("<div id='message'></div>").fadeIn(1500, function() { 
       $('#message').html("<h2>Thanks " + (firstname) + "!</h2>").append("<p>We will be in touch soon.</p>"); 
      }); 
     } 
    }); 
    return false; 
}); 

在PHP腳本我有這樣的代碼:

if (!empty($_POST)){   
    $adestra = $this->adestraAction('contact.create' , array('1', array('1.email' => $_POST['email'] , '1.forename' => $_POST['firstname'] , '1.surname' => $_POST['lastname'],'1.source' => 'signupbox'))); 
    $add = $this->addToListAction($adestra, $magazineID); 
} 

的$ _ POST可變因素似乎並沒有被得到設定。任何人都可以幫忙嗎?

+3

你可以發佈ajax查詢嗎?或者在你的php文件中,如果你打印post變量,你會得到什麼? <?php print_r($ _ POST);?> – 2012-08-06 14:21:27

+2

你可以發佈jQuery代碼嗎?也許它正在做一個GET請求,但即使沒有,看到代碼將有所幫助 – 2012-08-06 14:22:38

+0

當然,ajax查詢是: – richelliot 2012-08-06 14:23:12

回答

2
data: dataString : dataString, 

這是一個語法錯誤。我假設你真的想要:

data: dataString, 
+0

請再次閱讀帖子。我添加了更多的代碼來給你更多的信息。什麼即時通訊基本上試圖找出是如果$ _POST變量將獲得設置,如果通過AJAX提交表單,因爲它們是服務器變量。 – richelliot 2012-08-06 14:45:03

+0

@richelliot:你是什麼意思的「服務器變量」?你的代碼看起來應該可以工作。 '$ _POST'是否被正確填充? – 2012-08-06 14:49:44

+0

當我談論'服務器變量'即時消息約$ _POST。對困惑感到抱歉! $ _POST似乎永遠不會被填充。 – richelliot 2012-08-06 15:09:46

1

jQuery POST請求中的數據必須是Javascript對象。

將其更改爲:

data: { 
    'key' : 'value' 
} 

另外,如果dataString已經被格式化爲查詢字符串,看到火箭的答案。

+1

'data'也可以是一個查詢字符串'data:'key = value&key2 = value2''。 – 2012-08-06 14:33:25

+0

我剛剛編輯 – xbonez 2012-08-06 14:33:33

+0

我太快了。 :-P我現在看到:-) – 2012-08-06 14:34:01

0

請調試/警報dataString此行

var dataString = 'firstname=' + firstname + '&email=' + email + '&lastname=' ..... 

後,看看是否被正確填充所有的值?這可能是問題

+0

好吧,我發現問題是什麼。我的DEV環境沒有正確設置,因此它將數據發佈到索引頁面! – richelliot 2012-08-09 15:51:19