知道为什么这段代码:
$('body').on('click', 'a.friend' , function(e){
e.preventDefault();
overlayerOn();
var $uid = $(this).attr("href");
var $br = $('#board');
$br.css('display', 'block');
$('#board').load("messages.php?uid=" + $uid);
});
不发送任何内容... php?uid =?
这里是php脚本(但到目前为止还没有尝试接收变量):
$id = $_REQUEST['uid'];
echo "<div id='hovno'>" . $id . "</div>";
每次我只收到空div标签。
但是就像这样:
$('body').on('click', 'a.friend' , function(e){
e.preventDefault();
overlayerOn();
var $uid = $(this).attr("href");
var $br = $('#board');
$br.css('display', 'block');
$('#board').text($uid);
});
打印出实际正确的值。为什么它无法通过呢?谢谢
答案 0 :(得分:4)
您的变量$uid
包含一个href,它可能是某种类型的URI。在将其发送到PHP之前对其进行编码,以便可以从$_GET
正确检索它。
$('body').on('click', 'a.friend' , function(e){
e.preventDefault();
overlayerOn();
var $uid = $(this).attr("href");
var $br = $('#board');
$br.css('display', 'block');
// Send the encoded URI to PHP.
$('#board').load("messages.php?uid=" + encodeURIComponent($uid));
});
看到发布的PHP之后,我只想补充一点,当你直接从HTTP请求传递一个值到PHP输出时,你应该避免它反对跨站点脚本攻击。
$id = $_REQUEST['uid'];
echo "<div id='hovno'>" . htmlspecialchars($id) . "</div>";
答案 1 :(得分:0)
为什么不将$uid
放在.load()的数据选项中?
$('#board').load("messages.php", { 'uid': $uid } );
在php-script中使用$_POST['uid']
来接收数据......