一直无法通过URL将变量传递给MySQL查询,在这里阅读了各种解决方案并试图通过AJAX和JQuery解决这个问题,但无济于事。
通过MySQL查询填充列表(表),产生如下所示的链接:
echo "<td class='listingTextCentre'><a class='green' href='?sid=".$row[0]."&hid=".$row[1]."'> S".$row[0]."</a></td>";
当我将鼠标悬停在链接上时,获取sid和hid的正确值。我试图通过下面的AJAX传递sid和hid变量:
$('a').on('click', function(e) {
e.preventDefault();
$.ajax ({
url: "srlisting.php",
type: "get",
data: {sid: sid, hid: hid},
success: function(response) {
$('#divresult').load("srlisting.php");
},
});
});
但是,当点击链接时,我在控制台中收到错误:
非常感谢任何帮助。
srlisting.php文件的代码:
<?php
include 'dbconnect.php';
$sid = $_POST['sid'];
$rawList = "SELECT * FROM scheds WHERE sched_id = '$sid'";
$scheduleList = $connection->query($rawList);
mysql(close);
?>
控制台输出如下所示:
linktest.php:
<?php
?>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
<table>
<tr><td class='listingTextCentre'><a href='?sid=1&hid=634' class='green'>S1</a></td></tr>
</table>
<script>
//$("clickme").click(function() {
$('a').on('click', function(e) {
e.preventDefault();
var href = $(this).attr('href').substring(1);
hParts = href.split('&');
var dataString = '';
$.each(hParts, function(index,value){
var vParts = value.split('=');
dataString += vParts[0] + ':' + vParts[1] + ',';
});
sendData = '{' + dataString.slice(0, -1) + '}'; // returns {sid:"$row[0]",hid:"$row[1]"}
$.ajax ({
url: "phplinktest.php",
type: "post",
data: sendData, // place the string here
success: function(response) {
$('#divresult').html(response);
$('#divresult').show();
},
});
});
</script>
</body>
</html>
phplinktest.php:
<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
$sid = $_POST['sid'];
echo $sid;
var_dump($_POST);
?>
答案 0 :(得分:2)
点击后,您需要获得sid
和hid
的值。这意味着您必须解析链接的href
属性,这可以在不修改标记的情况下完成:
$('a').on('click', function(e) {
e.preventDefault();
var href = $('a').attr('href').substring($('a').attr('href').indexOf('?') + 1);
hParts = href.split('&');
var dataString = '';
$.each(hParts, function(index,value){
var vParts = value.split('=');
dataString += vParts[0] + ':' + vParts[1] + ',';
});
sendData = '{' + dataString.slice(0, -1) + '}'; // returns {sid:"$row[0]",hid:"$row[1]"}
$.ajax ({
url: "srlisting.php",
method: "post",
data: sendData, // place the string here
success: function(response) {
$('#divresult').html(response);
},
});
});
解析href
属性有点复杂,但最终会得到您想要的结果。解析这些值,然后将其发送到PHP脚本进行处理。
href
属性minus the starting ?
&
,
来完成
醇>
修改强>:
最后,您尝试使用.load()
函数将从AJAX返回的数据放入div
。 .load()
本质上是另一个不需要的AJAX调用,实际上不应该使用。您应该只将div
中的HTML设置为AJAX调用的响应:
success: function(response) {
$('#divresult').html(response);
},
只要href
是正确的查询字符串, EDIT 就会从链接中的href
获取正确的子字符串,无论其配置方式如何
答案 1 :(得分:0)
gplots