如何使用php,ajax和jQuery制作订阅按钮?

问题描述:

我完全不熟悉Ajax和jQuery,但是我试图为我的网站使用两个订阅按钮。如何使用php,ajax和jQuery制作订阅按钮?

现在我已经阅读了大部分的文档到Ajax和jQuery,并提出了一个小代码来做到这一点。

问题是,它不工作,我不能为我的生活看到为什么。

我点击订阅按钮,没有任何反应:
的subscribe.php脚本不运行,数据库没有更新,没有警报显示 - 就像我说的...没有任何反应

希望有人可以帮忙。

代码到目前为止
的jquery.js的页面,订阅按钮的顶部

<body> 
// Load official jQuery-library 
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> 
// Load my own jQuery-script file 
<script src="jQuery/jQuery.js"></script> 
. 
. 
. 
// Load all pages (videos.php, channel.php,...) as needed 
</body> 

// Code in my own jQuery.js 
$(document).ready(function(){ 
    "use strict"; 
    $("#subscribe").click(function(subscribeData){ 
     $.ajax({ 
      type: "POST", 
      url:'../scripts/subscribe.php', 
      data:{randomStringUser:subscribeData}, 
      dataType:'json', 
      success:function(data){ 
       alert("You subscribed");// Do what you do after subscribe.php has done it's thing 
       // just to test I just put an alert here 
      }, 
      error:function(){ 
       alert("Didn't work");// Do what you do if mission failed 
       // just to test I just put an alert here 
      } 
     }); 
    }); 
}); 

PHP(在保持在身体标记的开始所有其他网页的index.php加载)位于(即channel.php)和订阅按钮代码从Ajax的呼叫

<?php 

    . 
    . 
    . 
    $randomStringUser = $_GET['channel']; 
    $subscribeData = json_encode($randomStringUser); 

?> 
// Page html 
. 
. 
. 

// Subscribe-button 
<button type="button" class="btn btn-success" id="subscribe"> 
    Subscribe 
</button> 

subscribe.php

<?php 

    session_start(); 

    $randomStringUser = $_POST['randomStringUser']; 

    // $_SESSION['id'] is set with users-id when user log in 
    // So if user logged in use that id as $subscriberID 
    if (isset ($_SESSION['id'])) { 
     $subscriberID = $_SESSION['id']; 
    } 

    "SELECT id FROM userinfo WHERE randomString = ? LIMIT 1" // using $randomStringUser as ? 

    // Use the id found in SELECT as $subscriptionID 

    "INSERT INTO usersubscription (subscriberID , subscriptionID) VALUES (? , ?)" // Using $subscriberID and $subscriptionID from above as ? 
+0

您可以检查在谷歌Chrome开发者工具的网络标签,看是否请求'../脚本/ subscribe.php'是被制造? ('F12' - >网络) – Acidic

+0

刚刚做了,没有请求正在做......非常奇怪的嗯...... – APM

+0

好的,我不得不检查网络中的错误...所以没有发送请求,但它会抛出一个“uncaught TypeError :$ .ajax不是一个函数“ – APM

$.ajax找不到,因为您引用的是一个slim版本的jQuery而不是整个库。

我建议你使用jQuery的完全压缩版本,这样你就可以充分发挥它的潜力。

尝试用以下替换您<script>标签:

<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="crossorigin="anonymous"></script>