将数据通过Ajax发送到PHP的奇怪行为

时间:2015-01-28 09:22:53

标签: php jquery ajax post

我正在使用我在上一个网站中使用的自己的php代码基础构建一个网站但是在2个月之后,我使用相同的基础并且正在发生接收PHP文件中的数据以使用jQuery处理信息的事情ajax和我真的不明白错误:

当我发送数据时,在Google Chrome中的表单数据选项中,开发人员工具仅显示带有数据的字段文本,但是当我使用var_dump()打印此POST数据时,将打印所有这些文本:

enter image description here enter image description here

关于Javascript代码,这是一个简单的ajax代码:

var doFunction = function($form)
{

var form_data =  $form.serialize();

var data = {
    form: form_data,
    tag: 'save'
};

$.ajax({
    url: 'routes.php',
    type: 'post',
    dataType: 'json',
    data: data
})
.done(function(data) {

})
.fail(function(jqXHR) {

})
.always(function() {

});

return false;
}

PHP代码只是一个var_dump($ _ POST);只是检查数据。关于错误的简单解释就像我发送这些数据一样:

Name: 'My Name',
Tag: 'save'

PHP代码正在显示

My name: 'Name',
save: 'Tag'

或类似的东西。

我希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

您错误地将数据发送给PHP。这是你搞砸的部分:

var data = {
    form: form_data,
    tag: 'save'
};

而不是这样做,它将起作用:

var data = form_data + "&tag=save"

基本上发生的事情是你混合了两种不同的格式。 serialize函数返回一个字符串,其中键值对由&符号(&)分隔。但是,当您添加标记时:"保存",您正在使用javascript对象。

既然你把它们混合起来,你只需要发送2个post变量到你的php脚本。 $ _POST [' form']这是一个字符串,其键值对由&符号和&和$ _POST [' tag']分隔,设置为"保存& #34 ;.

您的PHP脚本看起来像是在期待" nombre"作为一个不存在的POST变量,并发出通知。