【问题标题】:Run jquery function when click on bootstrap tab单击引导选项卡时运行 jquery 功能
【发布时间】:2014-04-29 07:38:43
【问题描述】:

我想在单击引导选项卡时运行 ajax 函数。

我有html:

  <li><a href="#upotrebljeni" data-toggle="tab">Upotrebljeni resursi</a></li>

jquery ajax 函数:

$('a #upotrebljeni').click(function (e) {
var ajdi = '22';
var radnici = 'radnici';
var prvi = '1'; 
    $.ajax({
            url: 'getRMZ.php', // make this url point to the data file
            dataType: 'json',
            data:{id_akt:ajdi, tabela:radnici, prvi:prvi},
            async: false,
        type: 'POST',
            success:function(data){
            console.log(data);
            },
        error:function(data) {
        console.log(data);
        }

        });

});

和 getRMZ.php pdo 文件:

try {
      /* Establish the database connection */
      $conn = new PDO("mysql:host=localhost;dbname=$dbname", $username, $password);
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

     $result = $conn->query("SELECT id_tabele,naziv FROM track_aktivnosti WHERE prvi = :prvi AND id_akt = :id_akt AND tabela = :tabela");
     $result->execute(array(':prvi' => $_POST['prvi'], ':id_akt' => $_POST['id_akt'], ':tabela' => $_POST['tabela']));

    $jsonTable = json_encode($result);
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }
    echo $jsonTable;

现在,当我单击选项卡 #upotrebljeni 时,我没有收到任何操作、任何错误,什么都没有……这可能是什么问题?

更新:我通过 ajax 得到一个错误:“错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;请查看与您的对应的手册MySQL 服务器版本,用于在第 1 行的 ':prvi AND id_akt = :id_akt AND tabela = :tabela' 附近使用正确的语法

【问题讨论】:

  • 我的猜测是引导程序绑定的事件首先执行并在其中某处返回 true,因此您的事件没有执行

标签: javascript php jquery ajax pdo


【解决方案1】:

&lt;a id="upotrebljeni" href="#upotrebljeni" data-toggle="tab"&gt;Upotrebljeni resursi&lt;/a&gt;

删除空格。

使用

$('a#upotrebljeni').click(function (e) {

而不是

$('a #upotrebljeni').click(function (e) {
    ^

a #upotrebljeni 选择器将查找 ID 为 inside 的元素和 &lt;a&gt; 标记,而a#upotrebljeni 选择器查找具有 ID 的 &lt;a&gt; 元素。 p>

【讨论】:

  • @gmaestro - 你是先通过 ajax 加载这个链接#upotrebljeni 吗?
  • 我这样加载:$('a#upotrebljeni').click(function (e) {
  • @gmaestro - 哈哈!我的错。我什至没有注意你的链接。你没有“身份证”。你有一个href。你应该有一个带有“upotrebljeni”的ID。
  • 好的,但是现在我的 php 文件返回 - via ajax: "ERROR: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;检查对应的手册您的 MySQL 服务器版本,以便在第 1 行的 ':prvi AND id_akt = :id_akt AND tabela = :tabela' 附近使用正确的语法
  • @gmaestro - 现在这是一个不同的错误。您可以获得点击工作。我猜你必须研究你的 SQL 语法,而且我不是 SQL 专家。
【解决方案2】:

您需要将id="upotrebljeni" 添加到您的锚点:

<li><a id="upotrebljeni" href="#upotrebljeni" data-toggle="tab">Upotrebljeni resursi</a></li>

因为您使用的是#,所以它会以id 而非href 为目标。

另外,因为id是唯一的,你只需要使用:

$('#upotrebljeni').click(function (e) {

代替:

$('a#upotrebljeni').click(function (e) {

【讨论】:

  • 是的,但现在我的 php 文件通过 ajax 重新运行; “错误:SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在 ':prvi AND id_akt = :id_akt AND 附近使用正确的语法tabela = :tabela' 在第 1 行"
  • 我认为您不需要这里的空间。只需尝试使用prvi=:prvi 而不是prvi = :prvi。其他参数同理
  • 我还将查询更改为准备语句:$result = $conn->prepare(... 现在我得到了这个:对象 {queryString:"SELECT id_tabele,naziv FROM track_aktivnosti WHERE prvi=:prvi AND id_akt=:id_akt AND tabela=:tabela"} 但帽子就是这个,这不是数据库中的 json ...
猜你喜欢
  • 2023-03-30
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 2011-08-26
  • 2021-04-06
  • 1970-01-01
相关资源
最近更新 更多