0

我想用 AJAX 提交我的表单。我编写了一个通过按下按钮来触发它的函数:

function putUser() {
    $('button#putUser').on('click', function() {
        var user = $('input#user').val(),
            amount = $('input#amount').val(),
            what = $('input#amount').val(),
            country = $('input#country').val(),
            platform = $('input#platform').val(),
            formUrl = $('form#sendUser').attr('action');

        var data = {
            user: user,
            amount: amount,
            what: what,
            country: country,
            platform: platform
        }

        $.post(formUrl, $('#sendUser').serialize(), function() {
            alert('test');
        }).done(function() { alert('done')})

        return false;
    })
}

这在理论上可行,因为我变得done警觉。但是没有数据被提交。怎么了?我的 SQL 语句工作得很好。

我的PHP代码:

if(isset($_POST['putUser'])) {
    $user = $_POST['user'];
    $amount = $_POST['amount'];
    $what = $_POST['what'];
    $country = $_POST['country'];
    $platform = $_POST['platform'];

    $query = mysql_query('INSERT INTO sells (id, user, amount, what, country, platform) '
        . 'VALUES (NULL , "' . mysql_real_escape_string($user) . '", "' . mysql_real_escape_string($amount) . '", "' . mysql_real_escape_string($what) . '", "' . mysql_real_escape_string($contry) . '", "' . mysql_real_escape_string($platform) . '")');

    if($query) {
        echo 'ok';
    } else {
        die(mysql_error());
    }
}
4

3 回答 3

2

我会将 putUser 参数更改为 get 参数。

<form action="sendUser.php?putUser">

php

if(isset($_POST['putUser'])) {

js

function putUser() {
    $('#sendUser').on('submit', function() {
        var formUrl = $(this).attr('action');

        $.post(formUrl, $(this).serialize(), function() {
            alert('test');
        }).done(function() { alert('done')})

        return false;
    })
}

也改为提交事件而不是点击,这让我可以进一步使用this而不是选择器。

于 2013-08-16T15:38:55.160 回答
1

是什么$('#sendUser').serialize()?那是你建造的形式data吗?

编辑:尝试 dataType 'json' 发布 - http://api.jquery.com/jQuery.post/

于 2013-08-16T15:19:35.053 回答
0

看起来您实际上并未发送要提交的数据。

请注意,$('#sendUser').serialize()已更改为您的data对象。并且putUser已添加到data以便服务器端代码识别它。

我想你想要这个:

function putUser() {
    $('button#putUser').on('click', function() {
        var user = $('input#user').val(),
            amount = $('input#amount').val(),
            what = $('input#amount').val(),
            country = $('input#country').val(),
            platform = $('input#platform').val(),
            formUrl = $('form#sendUser').attr('action');

        var data = {
            putUser: true,
            user: user,
            amount: amount,
            what: what,
            country: country,
            platform: platform
        }

        $.post(formUrl, data, function() {
            alert('test');
        }).done(function() { alert('done')})

        return false;
    })
}
于 2013-08-16T15:17:45.337 回答