我正在尝试使用AJAX更新我的数据库,但不知何故它不起作用。我已经完成了将数据库中的数据导入输入字段的部分。
我有一个输入字段“name”:
<form method="post" ACTION="update.php">
<input maxlength="250" NAME="name" id="name" value="SomeName" SIZE="50">
<INPUT TYPE="submit" NAME="submit" id="submit" VALUE="submit">
<span id="error" style="display:none"> Please Enter Valid Data! Did you fill in all the fields?</span>
<span id="success" style="display:none"> the name has been updated successfully!</span>
</form>
使用此代码:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("#submit").click(function() {
var name = encodeURIComponent($.trim($("#name").val()));
var dataString = "name =" + name;
if(name == "")
{
$("#success").fadeOut(2).hide();
$("#error").fadeOut(200).show();
}
else
{
$.ajax({
type: "POST",
url: "update.php",
data: dataString,
dataType:'json',
success: function(data)
{
if(!data.error)
{
$("#success").fadeIn(200).show();
$("#error").fadeOut(200).hide();
}
else
{
alert(data.error);
}
}
});
}
return false;
});
});
我将名称传递给update.php,即:
<?php
$con = mysql_connect('localhost', 'someUsername', 'somePassword');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("someDatabase", $con);
if(isset($_POST['name']))
{
$name = mysql_real_escape_string($_POST['name']);
$query="UPDATE SOMETABLE SET name ='$name'";
$result = mysql_query($query) or die (mysql_error);
}
else
{
echo "Something wrong with the POST";
}
mysql_close($con);
exit;
?>
我收到错误:“POST有问题”;
提前致谢。
更新:问题不是“名称”而不是“名称=”(我已经编辑过)。这只是一个输入错误。
答案 0 :(得分:1)
var dataString = "name" + name;
此行应更改为此;
var dataString = "name=" + name;
答案 1 :(得分:1)
您在jquery ajax请求中使用数据类型“json”。而且你只给这个方法一个字符串。
将dataString值更改为:
var dataString = {'name':name};
这应该可以正常工作;)
答案 2 :(得分:1)
除非您使用关闭“processData”选项,否则您需要将对象作为数据传递。
请参阅jQuery API中的以下代码段:
默认情况下,数据作为对象传入数据选项 (技术上,除了字符串之外的任何东西)将被处理和 转换为查询字符串,适合默认的内容类型 “应用程序/ x WWW的形式进行了urlencoded”。如果你想发送一个 DOMDocument或其他未处理的数据将此选项设置为false。 http://api.jquery.com/jQuery.ajax/
答案 3 :(得分:0)
您的数据应作为数组(reference)传递,请尝试将帖子更改为以下内容:
$.ajax({
type: "POST",
url: "update.php",
data: {
name: name
},
dataType:'json',
success: function(data)
{
if(!data.error)
{
$("#success").fadeIn(200).show();
$("#error").fadeOut(200).hide();
}
else
{
alert(data.error);
}
}
});