来自PHP服务器的AJAX GET仅在第二次调用后工作

时间:2016-06-30 21:25:21

标签: javascript php jquery ajax get

首先 - 我刚刚开始学习PHP并具有一些jQuery的经验。其次 - 我试着解决这个问题好几天,请不要把我钉在十字架上,请...

我需要使用jQuery AJAX调用PHP服务器从数据库中获取数据。它有效,但问题是它只在第二次调用(点击)后才这样做。

表单以异步方式加载到body,当我按照指向它的链接时,URL是 ... / index.php#tr_dom 。我注意到,当我第一次点击按钮时,URL从 ... / index.php#tr_dom ... / index.php?order = ASC#tr_dom 并清空页面,但URL保持不变。然后,我再次转到该特定链接。表单再次加载,只有现在,当我单击调用相关函数的按钮时 - 它按预期工作。

有人可以帮助澄清这个问题吗?相关代码如下。

PHP DBBrocker:

function prikaziTroskoveDomacinstva($username, $sort_val, $sort_order) {
            $query = "SELECT * FROM (trosak t INNER JOIN trosak_domacinstva td ";
            $query .= "ON t.trosak_id = td.trosak_id) INNER JOIN datum d ";
            $query .= "ON t.datum_id = d.datum_id INNER JOIN vrsta v ";
            $query .= "ON v.vrsta_id = td.vrsta_id ";
            $query .= "WHERE username = '".$username."'";

            if (isset($sort_val)) {
                $query .= " ORDER BY ".$sort_val;
            }

            if (isset($sort_order)) {
                $query .= " ".$sort_order;
            }

            $result = $this->mysqli->query($query);

            $this->chckResult($result); //not relevant in this context

            while($row = $result->fetch_assoc()) {
                echo ("<br>".$row['iznos'].
                    "<br>".$row['opis'].
                    "<br>".$row['datum'].
                    "<br>".$row['naziv']);
            }
        }

PHP控制器:

include_once("DBBroker.php");
$dbb = new DBBroker();

if (isset($_GET["function"]) && !empty($_GET["function"]) && $_GET["function"] == "tr-dom-select") {
        $dbb->prikaziTroskoveDomacinstva("Nikolic", $_GET["sort_val"], $_GET["sort_order"]);
    }

$dbb->closeConnection();

JQuery函数:

var loadForm = function (hRef) { //loads the form on click of the <a>
        document.location.hash = hRef;
        $("#main").empty().load("../includes/layout/"+hRef+".php");
}

var selectTrDom = function(responseFn) { //gets data from server
    var sortVal = $("#tr-frm select").val();
    var sortOrder = $('#tr-frm input[name="order"]:checked').val();

    $.ajax({
        type : 'GET',
        url: '../includes/layout/main.php',
        dataType : 'text',
        data : {
            'function' : 'tr-dom-select',
            'sort_val' : sortVal,
            'sort_order' : sortOrder
        },
        success : function(data) {
            responseFn(data);
        }
    }); 
}

var responseCallback = function(data) { //displays data on ajax success
    $("#message-box").html(data);
}

并在$(document).ready(...)

//load the right form on click, pass correct hRef

$(document).on('click', '#tr-frm #btn-sort', function(evt) {
    selectTrDom(responseCallback);
});

1 个答案:

答案 0 :(得分:0)

试试这个

$('#tr-frm #btn-sort').click(function(event) {
    selectTrDom(responseCallback);
});