You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery如何返回未编码的值?编码解码及AJAX传参问题咨询

解决AJAX发送HTML实体编码属性值的编码异常问题

嘿,我懂你遇到的麻烦了——从img标签的game属性里拿到的字符串带了HTML实体(’),直接用AJAX发去PHP服务器后就出现了编码异常对吧?这是因为’是HTML转义后的实体,浏览器不会自动帮你解析成真正的单引号,咱们一步步来搞定它:

  • 先在前端解码HTML实体
    你用$(this).attr('game')取到的是原始的实体字符串(也就是Hellblade: Senua’s Sacrifice),并没有被解析成正常的单引号’。可以用个简单的DOM技巧来解码:

    $('#pcs').click(function(){ 
      if($(this).attr('src') == "xxx.jpg" ) { 
        $(this).fadeOut(100, function() { 
          var cookie = "dummy"; 
          var gameEncoded = $(this).attr('game');
          // 创建临时div解码HTML实体
          var tempDiv = $('<div/>').html(gameEncoded);
          var gameDecoded = tempDiv.text();
          $.ajax({ 
            url: "http://example/notif_games.php", 
            type: "POST", 
            data: ({'cook_':'cookie', 'game_': gameDecoded}), 
          }); 
        });
      }
    });
    

    这里用jQuery创建了一个临时div,把实体字符串塞到它的innerHTML里,再取text()就能得到解码后的正常文本Hellblade: Senua’s Sacrifice了。

  • 确保AJAX请求的编码规范
    为了避免UTF-8编码的字符串在传输中出问题,可以给AJAX请求显式指定contentType:

    $.ajax({ 
      url: "http://example/notif_games.php", 
      type: "POST", 
      contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      data: ({'cook_':'cookie', 'game_': gameDecoded}), 
    });
    

    这样jQuery会以UTF-8编码发送数据,和服务器端的编码保持一致,减少乱码概率。

  • PHP端做好编码接收
    在你的PHP脚本开头,先设置正确的编码头,确保服务器能正确解析POST过来的UTF-8数据:

    header('Content-Type: text/html; charset=UTF-8');
    $game = $_POST['game_'];
    // 可以打印出来验证是否正常
    echo $game;
    

    这样你就能拿到正常的、没有编码异常的游戏名称了。

另外提一句,纯JS的decodeURIComponent只处理URI编码,不处理HTML实体,所以还是DOM解码的方法最靠谱。

内容的提问来源于stack exchange,提问作者lk8a_2m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:24:29