php jQuery:Ajax POST调用不发送数据

ao218c7q  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(105)

Firebug说请求被发送到服务器,200 OK,但PHP数组$_POST是空的。

var pass_data = {
    'email':$("#email").val(),
    'verifyemail':$("#verifyemail").val(),
    'password':$("#password").val(),
    'confirm_password':$("#vPassword").val(),
}

$.ajax({
    type: "POST",
    url: 'localhost/pages/register',
    dataType: 'json',
    data: pass_data,

});

请求标头:

Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Length  86
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Host    localhost
Referer http://localhost/
User-Agent  Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0
X-Requested-With    XMLHttpRequest

有什么想法吗?

mcdcgff0

mcdcgff01#

我通常避免在变量声明中直接使用jQuery返回值。引用可能会使解析不一致。建议如下:

var pass_data = $('form').serialize();

让jQuery来做繁重的工作。
P.S.刚刚注意到你的变量声明pass_data在最后一个元素后面有一个逗号。这是畸形的。传递给$. ajax的对象也有同样的问题。去掉最后一对的逗号。

a9wyjsp7

a9wyjsp72#

var pass_data = {
    'email':$("#email").val(),
    'verifyemail':$("#verifyemail").val(),
    'password':$("#password").val(),
    'confirm_password':$("#vPassword").val()
};

$.ajax({
    type: "POST",
    url: 'localhost/pages/register.php',
    dataType: 'json',
    data: {posted_data: pass_data}
});

您应该查看register.php上的**$_POST文件'posted_data']**。

bxjv4tth

bxjv4tth3#

我避免直接使用jQuery返回值。但我找到了解决问题的办法

id   = $('#id').val();
etc  = $('#etc').val();

data = {
  id: id,
  etc: etc
}

const formData = new FormData();
Object.entries(data).forEach(([key, value]) => {
    formData.append(key, value);
});

相关问题