我正在尝试对从数据库中获取的一些用户输入进行编码,然后在单击时将其插入文本区域。这是我的代码,用于对数据进行编码,将用户发送到文本区域锚,然后触发我的功能。
$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:语法错误1号线
当谈到JavaScript时,我是一个完全的新手,所以我可能会错过一些非常明显的东西。我已经为此寻找并尝试了很多不同的编码选项和方法,但我没有取得任何进展。
由于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_encode
生成的JSON的副本,并通过JSON lint实用程序运行它以确保它是有效的。
看看这是否有效。对于不支持原生字符串的浏览器,您可以在此处获取函数的代码。
也许您需要确保向quote函数发送了一个字符串。就我所见,您可能正在发送quote([url]...
,而您应该发送quote("[url]..."
(注意引号字符)
由于数据来自数据库,在对其进行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