Javascript $.post未将数据发送到php脚本

Javascript $.post未将数据发送到php脚本,javascript,php,jquery,ajax,post,Javascript,Php,Jquery,Ajax,Post,好吧,我不知道出了什么问题。我试图将表单数据从一个简单的jQuery脚本传递到我的php脚本,但由于某种原因,当我试图访问$\u POST数据时,php说$\u POST是空的 现在开始,我有以下jQuery和php脚本 jQuery var post = $('#cform').serialize(); console.log("POST DATA: " + post); $.post(action, post, function(data){ document.getElementB

好吧,我不知道出了什么问题。我试图将表单数据从一个简单的jQuery脚本传递到我的php脚本,但由于某种原因,当我试图访问$\u POST数据时,php说$\u POST是空的

现在开始,我有以下jQuery和php脚本

jQuery

var post = $('#cform').serialize();
console.log("POST DATA: " + post);
$.post(action, post, function(data){
    document.getElementById('message').innerHTML = data;
    $('#message').slideDown('slow');
    $('#cform img.contact-loader').fadeOut('slow',function(){$(this).remove()});
    $('#submit').removeAttr('disabled');
    if(data.match('success') != null) $('#cform').slideUp('slow');
 });
PHP

var post的控制台日志如下所示

POST DATA: fname=Daniel&lname=Jarvis&email=test%40gmail.com&phone=4444444444&comments=hello
{fname: "Dan", lname: "Jarvis", ...}
而$U POST的var_dump则说明了这一点

array(0) { } 
我不知道为什么这会给我带来如此多的问题,所以任何帮助都将不胜感激

p.S 我也尝试过简单地为post数据做这件事,但它仍然不起作用

var post = {fname: $('#fname').val(), lname: $('lname').val(), ...} //you get the idea
console.log如下所示

POST DATA: fname=Daniel&lname=Jarvis&email=test%40gmail.com&phone=4444444444&comments=hello
{fname: "Dan", lname: "Jarvis", ...}
但是当我var_转储$POST变量时,它仍然说

array(0) { } 

*您的代码中有几个问题

1.添加将触发ajax的事件

2.您的php脚本不回显任何数据

3.无返回错误或防止defaul手动停止表单提交。(我认为这是主要问题)

检查解决方案:*

HTML:

    <form id="form">

    <input type="text" name="fname">
    <input type="text" name="lname">
    <input type="text" name="email">
    <input type="text" name="phone">
    <input type="text" name="comments">
    <input type="submit" name="submit" value="submit">

    </form>

    <span id="message"></span>
    $("#form").submit(function(){

        var post = $('#form').serialize();
        console.log("POST DATA: " + post);
        $.post('target.php', post, function(data){
        document.getElementById('message').innerHTML = data;
        $('#message').slideDown('slow');
        $('#cform img.contact-loader').fadeOut('slow',function(){$(this).remove()});
        $('#submit').removeAttr('disabled');
        if(data.match('success') != null) $('#cform').slideUp('slow');

     });
    return false;
    })
  $fname  = $_POST['fname'];
  $lname  = $_POST['lname'];
  $email = $_POST['email'];
  $phone = $_POST['phone'];
  $comments = $_POST['comments']; 

  echo $fname.$lname.$email.$phone.$comments;
PHP(我假设您的PHP脚本是target.PHP):

    <form id="form">

    <input type="text" name="fname">
    <input type="text" name="lname">
    <input type="text" name="email">
    <input type="text" name="phone">
    <input type="text" name="comments">
    <input type="submit" name="submit" value="submit">

    </form>

    <span id="message"></span>
    $("#form").submit(function(){

        var post = $('#form').serialize();
        console.log("POST DATA: " + post);
        $.post('target.php', post, function(data){
        document.getElementById('message').innerHTML = data;
        $('#message').slideDown('slow');
        $('#cform img.contact-loader').fadeOut('slow',function(){$(this).remove()});
        $('#submit').removeAttr('disabled');
        if(data.match('success') != null) $('#cform').slideUp('slow');

     });
    return false;
    })
  $fname  = $_POST['fname'];
  $lname  = $_POST['lname'];
  $email = $_POST['email'];
  $phone = $_POST['phone'];
  $comments = $_POST['comments']; 

  echo $fname.$lname.$email.$phone.$comments;

查看
$.ajax()
语法。在我看来,它比
$.post()
语法直观得多。检查
$\u服务器['REQUEST\u METHOD']
。如果这不是post,那么您的ajax帖子会被重定向到其他地方。请在浏览器控制台中查看请求/响应。您将看到请求是否包含负载和响应返回的任何数据?你知道这意味着什么,或者为什么它说的是GET而不是POST吗@MarcBsomething导致您的帖子被重定向,从而使其成为get。你必须到处寻找重写或其他服务器端的恶作剧。问题并没有显示ajax是如何被触发的,但很明显,这是因为函数的输出已经被描述过了。2.OP引用了他们在PHP中放入
var_dump
时看到的内容,因此它确实输出了数据,只是在问题中没有得到很好的表达。3.这假设表单提交被用于触发提交……因为问题引用了PHP的输出,所以可能不是问题所在。@Quentin他的PHP脚本没有收到任何数据,这就是为什么var_dump()显示空数组的原因。因为ajax没有使用post发送任何数据。Ajax正在使用get发送数据,因为没有使用
返回false
。表单提交正在手动执行,因此get正在发送数据。你怎么能说他的php脚本正在发送数据呢?他根本不用回声。触发代码的事件在哪里?“Ajax正在使用get发送数据,因为没有使用return false。”-这毫无意义。“表单提交是手动执行的,所以get正在发送数据”——这是一个有趣的理论,但问题中没有足够的信息来确定情况是否如此。“你怎么能说他的php脚本正在发送数据?他根本没有使用任何回音”-因为OP已经显示了他们正在使用的
var\u dump
代码及其输出。“触发代码的事件在哪里”-不在问题中,但既然代码被触发…@Quentin如果我不为表单设置方法并手动提交表单,那么该方法是什么?绝对
GET
。那么$\u POST方法如何从get获取数据呢?那么,
var\u dump
会做什么呢?变量转储将不发送任何数据。