jQuery load()函数不起作用


jQuery load() function not working

任何关于此代码的想法:

$('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);
    });

它正在打印出实际的正确值。为什么它不能通过它?感谢

您的变量$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>";

为什么不将$uid放在.load()的数据选项中?

$('#board').load("messages.php", { 'uid': $uid } );

在php脚本中使用$_POST['uid']来接收数据。。。