【问题标题】:Ajax script doesn't insert into databaseAjax 脚本不插入数据库
【发布时间】:2015-10-22 08:12:18
【问题描述】:

我正在尝试使用 ajax 交朋友系统和添加朋友。问题是当我点击按钮时没有任何反应。不向数据库中插入任何内容。所以这是按钮

<a href="javascript:;" class="newFriend has-tooltip pull-right" data-title="Add as friend" id="'.$id.'"" ><i class="fa fa-user"></i> Add as friends </a>

这是add_friend.php

include 'database.php';
$pdo = Database::connect(); 

if(!empty($_POST["id"])) {

    $friend_id = $_POST['id'];             
    $id = $_SESSION['id'];   

            $value = $pdo->prepare('SELECT * FROM user_friends WHERE friend_id= ? and id = ?'); // BDD query, page ID values
            $value->bindParam(1, $friend_id, PDO::PARAM_INT);
            $value->bindParam(2, $id, PDO::PARAM_INT);              
            $value->execute();
            $result = $value->fetch();    

if( $result > 0) {
        echo 'already added';           
}
else 
{
    $friend_id = $_POST['id'];             
    $id = $_SESSION['id']; 

    $query = $pdo -> prepare("INSERT INTO user_friends (friend_id, id)
                            VALUES (:friend_id, :id)");   
    $query -> execute(array(
                      ":friend_id"         => $friend_id,
                      ":id"          => $id
    ));     
}

还有这个

<script>    

$(document).ready(function(){
$('.newFriend', $('.buttons')).click(function(){
    $.post('misc/add_friend.php', 
    { 
        "id": $(this).attr('id'),
    },
    function(data){
        if(data == 0){
            $('#message_newfriend').html('<div id="alertFadeOut" style="color: green">Added as friend!</div>');
             $('#alertFadeOut').fadeOut(3000, function () {
                $('#alertFadeOut').text('');
             }); 
        }
        else {
             $('#message_newfriend').html('<div id="alertFadeOut" style="color: green">User is already in your friend list!</div>');
             $('#alertFadeOut').fadeOut(3000, function () {
                $('#alertFadeOut').text('');
             }); 
        }
     });
});
});
</script>

表格很简单 user_friends - 几行 - friend_id (int 4)id (int 4)

知道可能是什么问题吗?

【问题讨论】:

  • 你的ajax加载了吗?
  • 您是否检查过浏览器控制台以查看是否抛出了任何错误? (对于 Chrome,您可以按 F12)
  • 如果您谈论控制台 - 我在 Web 浏览器的控制台中看不到任何内容。
  • 查看 chrome 上的 Network 标签
  • 为什么你有这个$('.newFriend', $('.buttons')),是.button.newfriend的祖先吗?

标签: php jquery mysql ajax


【解决方案1】:

这一行是错误的

$('.newFriend', $('.buttons')).click(function(){
               ^            ^// wrong method

改成,

$('.newFriend, .buttons').click(function(){

【讨论】:

  • 是的,这就是问题所在。现在正在工作。谢谢!
  • 我会在接受的倒计时结束后,即在 7 分钟内结束。
  • 只是提到你的解决方案出错了,因为还有一个 ) 更多.. 当我删除它时,我让它工作了 - $('.newFriend, .buttons').click(function()
【解决方案2】:

首先选择一个浏览器来测试您的 ajax 调用。带有 Firebug 插件的 Google Chrome 或 Firefox 都不错。我的首选是火狐。 这是我在 Firefox 中按 F12 使用 Firebug 进行调试的方法: firebug 打开然后单击 Net 选项卡,然后单击 XHR,您将看到在浏览器和服务器之间传递的数据。 您必须确定问题出在客户端脚本还是服务器端脚本上。 每次发出请求,XHR下都会显示一个新的url,点击url字符串开头的加号,可以看到Header,Post,Response,JSON,Cache和cookie选项卡,这些都是东西在浏览器和服务器之间来回传递。

Post 选项卡显示浏览器发送的数据,Response 选项卡显示服务器随后发送的数据。 如果服务器端出现错误,由您的 php 脚本生成,您会在那里看到。

【讨论】:

  • 感谢您的回答。它将帮助我解决未来的问题!
  • 不客气,对于客户端脚本问题(如果有),您可以在与 Net 选项卡相同级别的 Console 选项卡中查看。
  • 我知道控制台选项卡,这次什么都没有,但不知道如何使用网络选项卡:)
猜你喜欢
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 2012-11-10
相关资源
最近更新 更多