【发布时间】:2013-05-15 15:35:20
【问题描述】:
所以我有一个使用 AJAX 将 json 字符串传递给 php 文件的脚本。我使用 JSON.stringify() 一个 javascript 数组到一个 json 字符串。问题是数组中的项目有时包含引号(即在 html 标签的属性的情况下)。这是生成的示例 json 字符串:
[["CUGHDAA ID Equity","Cullen Global High Dividend USD","0.5","<a href="\""#"\"">x</a>"],["XESX GY Equity","DB X Euro Stoxx 50","0.5","<a href="\""#"\"">x</a>"],["ABEFROA LX Equity","Aberdeen Global Emerging Markets","0.25","<a href="\""#"\"">x</a>"]]
JSON.stringify() 转义和 html 编码引号,但是当我通过 GET 变量将字符串传递给 php 文件时,我的 php 文件似乎无法接收它:引号似乎只是把一切都搞砸了。我该怎么做才能确保 json 字符串到达 php 而不会弄乱 GET 形式?
编辑:如果我要使用 POST,我将如何通过 jQuery Ajax 传递它?
这是我目前所拥有的:
var form = $(this),
formData = '&id=' + id + '&portData=' + JSON.stringify(tbl),
formUrl = form.attr('action'),
formMethod = form.attr('method'),
responseMsg = $('#update-response');
//add status data to form
form.data('formstatus','submitting');
//Do the ajax
$.ajax({
url: formUrl,
type: formMethod,
data: formData, etc...
尽管使用了formData 变量名,但我传递的数据不是在表单中,而是在提交时收集的一组javascript 变量。我如何通过 POST 而不是 GET 传递 id 和 JSON.stringify(tbl)?
【问题讨论】:
-
有了这么多数据,你真的应该使用 POST 而不是 GET。
-
好吧,您显示的是错误地转义了 JSON。那是从哪里来的?你在 PHP 中究竟收到了什么?
-
我展示的是从
JSON.stringify返回的内容。这将作为 get 变量原封不动地发送,但由于 html 编码的引号被视为在它们之前带有斜杠的引号,因此在 URL 形式中引号不会被转义,这显然会造成混乱