Jquery Ajax将数据序列化为PHP

时间:2015-03-03 18:00:35

标签: php jquery ajax

我有一个从数据库中获取所有数据的表单,为了更新我需要序列化数据的数据。

alert($("form").serialize());

这是输出

tid=1&tname=T+Cap&tsize=XS&quantity=1&tprice=1200&tid=2&tname=Super&tsize=XS&quantity=1&tprice=2800&tid=3&tname=Dota+Tees&tsize=XS&quantity=1&tprice=700

如何在php中检索这些数据以便我更新数据库?

4 个答案:

答案 0 :(得分:2)

您必须合并函数$.submit()$.post()$.ajax()

$('form').submit(function() {
    $.ajax({
        type: "POST",
        url: $(this).attr("action"), 
        data: $(this).serialize(), // serializes the form's elements.
        success: function(data) {
            console.log(data); // show response from the php script
        }
    });
    return false;
});

然后在PHP脚本中,您必须从$_POST数组中读取数据。 E.g。

$tid = $_POST['tid'];

要调试传入的$ _POST数组,请使用var_dump()print_r()

如果您想要将响应发送到您的javascript,只需将您想要的内容打包到变量中,然后使用die(json_encode());。 E.g:

$output = array('status' => true, 'message' => 'Success');
die(json_encode($output));

还需要添加$.post()方法属性:

dataType : 'json'

答案 1 :(得分:0)

问题似乎是你正在重新定义$ _POST变量。它们不能包含与您当前发送它们相同的名称/密钥。基本上它就像重新定义变量一样,它将不再包含其先前的值。

tid=1&tname=T+Cap&tsize=XS&quantity=1&tprice=1200&tid=2&tname=Super&tsize=XS&quantity=1&tprice=2800&tid=3&tname=Dota+Tees&tsize=XS&quantity=1&tprice=700

请注意您多次调用tid和其他密钥的方式?相反,您可能希望为它们指定单独的名称,或者将一组值传递给PHP。

示例:

tid=1&tname=T+Cap&tsize=XS&quantity=1&tprice=1200&tid2=2&tname2=Super&tsize2=XS&quantity2=1&tprice2=2800&tid3**=3&tname3=Dota+Tees&tsize3=XS&quantity3=1&tprice3=700

当然还有其他方法可以做到这一点。

每个密钥必须具有唯一标识符,否则它将覆盖先前定义的$ _POST值。

而不是:

tid=1&
tid=2&
tid=3&

你想要:

tid1=1&
tid2=2&
tid3=3&

答案 2 :(得分:0)

在你的PHP中,在顶部写下这个,你就会看到发生了什么。

//If method = GET
var_dump($_GET);
//If method = POST
var_dump($_POST);
exit();

这将显示正在传递的所有变量并停止脚本,以便您可以在页面上查看。然后让你的jquery将响应数据放在你可以查看的div中。

答案 3 :(得分:0)

看起来像PHP的parse_str()函数。 http://php.net/manual/en/function.parse-str.php