首先 - 我刚刚开始学习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);
});
答案 0 :(得分:0)
试试这个
$('#tr-frm #btn-sort').click(function(event) {
selectTrDom(responseCallback);
});