jQuery load()函数无法正常工作

时间:2012-03-20 12:34:30

标签: php javascript jquery variables parameter-passing

知道为什么这段代码:

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

打印出实际正确的值。为什么它无法通过呢?谢谢

2 个答案:

答案 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']来接收数据......