2012-08-06 30 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