[英]Can't see "+" sign, passing data from AJAX to PHP
我不知道如何解释这一点,所以我会尽力而为。 我在 javascript 页面上有一个函数,如下所示:
function updateDiceTracker(){
// var htmldata = $results.html();
var htmldata = "2" + "\+" + "3";
$.ajax({ url: 'actions.php',
data: '&task=track.dice.roll&htmldata='+htmldata,
type: 'post',
success: function(output) {
alert(output);
},
error: function(xhr, e){ message(e, "e"); }
});
}
如您所见,这是非常标准的。 没有什么问题。 此函数的目的是获取存储在 $results 中的 .html()(这是一个 ID=results 的 div)。
注意注释掉的部分。 当我将此数据传递给 actions.php 时,我会从该 div 中获取所有 HTML,但“+”号除外。 显然,在此页面上,您可以看到“+”号。 我可以将这些数据发送到 textarea 并看到“+”号。 我可以将它发送到另一个 div 并看到“+”符号 - 但是当我将它发送到 actions.php 时......没有“+”符号。
注意它正下方的线。 我尝试手动将变量 htmldata 更改为 2+3 的不同变体(为简单起见)。 如“2”+“+”+“3”和“2+3”和“2+3”等——
每次,在成功函数中,输出总是:“ 2 3 ”(无加号)
我可以看到“2-3”、“2*3”等,但看不到加号。 我有点难住了,因为我觉得这要么太简单了,以至于我忽略了它——要么我快疯了
结果 div 中 html 的真实版本看起来像(还包括格式 - 但正如你所看到的,我需要那些加号)。 这是在调用 updateDiceTracker()之前向用户显示的内容
"Pixii Stix attempts to attack the enemy with Dagger: (1d20+5)
Dice Roll: [Hit]: 13 (+5) = 18"
此外,为了简单起见,我已经删除了 actions.php 页面上的所有代码。 从字面上看,这就是它现在的样子:
<?php
$task = isset($_POST['task']) ? $_POST['task'] : "";
if ($task){
switch($task){
case "track.dice.roll":
$htmldata = isset($_POST['htmldata']) ? $_POST['htmldata'] : "";
echo $htmldata;
break;
}
}
?>
始终将 URL 编码值添加到查询字符串中,尤其是当它们可能包含各种“特殊字符”时:
data: '&task=track.dice.roll&htmldata=' + encodeURIComponent(htmldata)
这将替换在 URL 中可能具有其他含义的特殊字符,以便它们被视为字符串值的一部分。
如有必要,您还可以在 PHP 中进行 URL 解码(如果它没有自动为您完成)。
实际上 url 可能会被解析而你没有得到结果。 试试这个。
用 %2B 替换 +
查看此页面以了解您的其他符号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.