【问题标题】:Updating database OnClick() <a>更新数据库 OnClick() <a>
【发布时间】:2017-02-16 22:57:18
【问题描述】:

我一直在这里寻找很多问题,但似乎没有什么对我有用...它不会更新数据库。

function language(id,lang){
  $.ajax({
      url: 'modules/tca/updatedb.php',
      type: 'POST',
      data: 'id='+id+'&lang='+lang,
   });
}
<li><a href="#en" onclick="return language($id,"en");"><span class="flag flag-usa flag-1x"></span> EN</a></li>
<li><a href="#fr" onclick="return language($id,"fr");"><span class="flag flag-frc flag-1x"></span> FR</a></li>

这是我更新的b.php。

<?php
@include_once('setdb.php');
$id = $_POST['id'];
$lang = $_POST['lang'];

mysql_query("UPDATE users SET lang='$lang' WHERE id = '$id' ");
?>

【问题讨论】:

  • 你的问题是什么?你有什么问题?有什么没有按预期工作吗?
  • 它没有更新数据库。
  • 这很可能是伪代码,但你应该小心 SQL 注入,因为你根本没有防范它。
  • 我稍后会介绍。首先我想让它成功更新。
  • @Daniel 您需要了解您正在做的不仅仅是insecure,它也可能是您的查询失败的原因。另外,stop using mysql_ functions,因为它们已从 PHP 中删除

标签: javascript php jquery html ajax


【解决方案1】:

这是工作选项。

<script>
    function language($id, $lang){
        //get the input value
        $.ajax({
            //the url to send the data to
            url: "modules/tca/updatedb.php",
            //the data to send to
            data: {id : $id, lang: $lang},
            //type. for eg: GET, POST
            type: "POST",
            //on success
            success: function(data){
                console.log("***********Success***************"); //You can remove here
                console.log(data); //You can remove here
            },
            //on error
            error: function(){
                    console.log("***********Error***************"); //You can remove here
                    console.log(data); //You can remove here
            }
        });
    }
</script>

在正文中:

<li><a href="#en" onclick="language(1,'en')"><span class="flag flag-usa flag-1x" ></span>EN</a></li>
<li><a href="#fr" onclick="language(2,'fr')"><span class="flag flag-frc flag-1x"></span> FR</a></li>

还有你的帖子页面(在这个例子中是你的 modules/tca/updatedb.php)

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "code";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$id = $_POST['id'];
$lang= $_POST['lang'];

$sql = "UPDATE users SET lang='$lang' WHERE id = '$id'";

if ($conn->query($sql) === TRUE) {
    echo "New record updated successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

【讨论】:

  • 我很高兴这个答案对你有用。享受:)
【解决方案2】:

您的问题似乎出在 LI 元素中。

<a href="#en" onclick="return language($id,"en");">

应该是:

<a href="#en" onclick="return language('<?= $id ?>', 'en');">

你也不应该使用 mysql_query。

【讨论】:

  • 你能详细说明一下具体的问题吗?它没有访问PHP页面吗? HTTP 请求是否返回 200 以外的错误代码?怎么回事?
  • 它没有返回任何东西,我单击链接并没有任何反应,我正在考虑该功能。我想我写错了或者不完整。
【解决方案3】:

“onClick 代码的返回值决定了链接的固有点击动作是否被处理 - 返回 false 意味着它没有被处理,但如果你返回 true,那么浏览器将在你完成后继续处理它函数返回并转到正确的锚点"

在这里找到HTML anchor link - href and onclick both?。所以尝试返回 true

<a href="#fr" onclick="language($id,"fr"); return true;">

【讨论】:

  • 不工作...没有任何反应,页面保持不变
猜你喜欢
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 2014-04-19
  • 2011-09-27
  • 2016-03-15
  • 2016-08-10
相关资源
最近更新 更多