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 に答える