使用AJAX更新数据库

时间:2012-01-03 15:34:00

标签: mysql html sql ajax jquery

我正在尝试使用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有问题”;

提前致谢。

更新:问题不是“名称”而不是“名称=”(我已经编辑过)。这只是一个输入错误。

4 个答案:

答案 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);
                }
            }
        });