【发布时间】:2015-10-28 16:44:53
【问题描述】:
好吧,我不知道出了什么问题。我试图从一个简单的 jQuery 脚本将表单数据传递给我的 php 脚本,但是由于某种原因,当我尝试访问 $_POST 数据时,php 说 $_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
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$comments = $_POST['comments'];
var post 的控制台日志是这样的
POST DATA: fname=Daniel&lname=Jarvis&email=test%40gmail.com&phone=4444444444&comments=hello
$_POST 的 var_dump 是这样说的
array(0) { }
我不知道为什么这会给我带来这么多问题,因此我们将不胜感激。
附言 我也尝试过简单地为发布数据执行此操作,但它仍然无法正常工作。
var post = {fname: $('#fname').val(), lname: $('lname').val(), ...} //you get the idea
console.log 看起来像这样
{fname: "Dan", lname: "Jarvis", ...}
但是当我 var_dumped $_POST 变量时它仍然说
array(0) { }
【问题讨论】:
-
查看
$.ajax()语法。在我看来,它比$.post()语法直观得多。 -
检查
$_SERVER['REQUEST_METHOD']。如果那不是帖子,那么您的 ajax 帖子被重定向到其他地方。 -
在浏览器的控制台中观察请求/响应。您将看到请求是否包含有效负载以及响应返回的任何数据。
-
我查看了 $_SERVER['REQUEST_METHOD'] 并显示 string(3) "GET"?任何想法这意味着什么或为什么它说 GET 而不是 POST? @MarcB
-
某事会导致您的帖子被重定向,从而将其变成获取。您将不得不四处寻找重写或其他服务器端恶作剧。
标签: javascript php jquery ajax post