我不确定如何解释这一点,所以我会尽力而为。我在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()(这是一个div,其中ID = results)。
请注意已注释掉的部分。当我将此数据传递到actions.php时,我从该div中获得了所有HTML,除了“ +”号。显然,在此页面上,您可以看到“ +”号。我可以将此数据发送到文本区域,并看到“ +”号。我可以将其发送到另一个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"
此外,为简单起见,我在action.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;
}
}
?>
答案 0 :(得分:1)
始终将URL编码值添加到查询字符串中,尤其是当它们可能包含各种“特殊字符”时:
data: '&task=track.dice.roll&htmldata=' + encodeURIComponent(htmldata)
这将替换可能在URL中具有特殊含义的特殊字符,以便将其视为字符串值的一部分。
如有必要,您也可以URL-decode in PHP(如果它不会自动为您完成)。
答案 1 :(得分:0)