-1

我正在尝试对从数据库中获取的一些用户输入进行编码,然后在单击时将其插入到 textarea 中。这是我对数据进行编码、将用户发送到 textarea 锚点,然后触发我的函数的代码。

$quote = "[url]" . $quote . "[/url]";
$quote = htmlspecialchars($quote, ENT_QUOTES);
$quote = json_encode($quote, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
echo "
<a href='#quickpost' value='quote' 
onClick=\"quote(" . $quote . ")\" name='quote'>Quote</a>

这是quote()函数:

function quote(originalpost){
oFormObject = document.forms['id1'];
oFormObject.elements['post'].value = originalpost;
};

当我单击它时,我在 firebug 中收到此错误:SyntaxError: syntax error Line 1

当谈到 JavaScript 时,我是一个完全的新手,所以我可能会遗漏一些非常明显的东西。我已经为此查看并尝试了很多不同的编码选项和东西,但我没有得到任何结果。

4

3 回答 3

3

由于 JSON 是原生 Javascript,因此在 JS 代码中声明或传递它时不应引用它。

尝试:

echo "
<a href='#quickpost' value='quote' 
onClick='quote($quote)' name='quote'>Quote</a>";

然后在您的函数中,您可能需要对 JSON 进行字符串化:

oFormObject.elements['post'].value = JSON.stringify(originalpost);

为了理智起见,获取由生成的 JSON 的副本并通过JSON lint 实用程序json_encode运行它以确保它有效。

看看这是否有效。对于没有原生 stringify 支持的浏览器,您可以在此处获取函数的代码。

于 2012-08-02T01:46:41.220 回答
0

也许您需要确保将字符串发送到引用函数。对于我看到的内容,您可能会quote([url]...在应该发送时发送quote("[url]..."(请注意引号字符)

于 2012-08-02T01:46:21.230 回答
0

由于数据来自数据库,因此只需在 json 编码之前将其作为数组输出。

//array from database
$array = array();
//set the header
header("content-type:json/application");
return json_encode($array);

然后将编码的 json 检索为 responseText。

var data = $.ajax({
  url:"",
  type:"json",
  cache:false,
  async:false
}).responseText;

var encodedData = JSON.parse(data);

现在你有一个有效的 json 对象,它是 encodedData

于 2012-08-02T01:52:03.173 回答