为什么不是';t json_encode正在工作


Why isn't json_encode working?

我正在尝试对从数据库中获取的一些用户输入进行编码,然后在单击时将其插入文本区域。这是我的代码,用于对数据进行编码,将用户发送到文本区域锚,然后触发我的功能。

$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