我想用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());
}
}
答案 0 :(得分:2)
我会将putUser param更改为get param。
<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
而不是选择器。
答案 1 :(得分:1)
什么是$('#sendUser').serialize()
?这是你为data
构建的表单吗?
修改强>: 尝试使用dataType'json'作为帖子 - http://api.jquery.com/jQuery.post/
答案 2 :(得分: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;
})
}