1

所以我有一个使用 AJAX 将 json 字符串传递给 php 文件的脚本。我将JSON.stringify()javascript 数组用于 json 字符串。问题是数组中的项目有时包含引号(即在 html 标签的属性的情况下)。这是生成的示例 json 字符串:

[["CUGHDAA ID Equity","Cullen Global High Dividend USD","0.5","<a href="\&quot;&quot;#&quot;\&quot;">x</a>"],["XESX GY Equity","DB X Euro Stoxx 50","0.5","<a href="\&quot;&quot;#&quot;\&quot;">x</a>"],["ABEFROA LX Equity","Aberdeen Global Emerging Markets","0.25","<a href="\&quot;&quot;#&quot;\&quot;">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 变量。我将如何通过 POSTidJSON.stringify(tbl)不是 GET?

4

1 回答 1

2

用于encodeURIComponent准备要插入 URI 的字符串。


由于您的编辑显示您正在使用 jQuery ajax,因此根本不要手动构建查询字符串。将对象传递给data.

data: { "id": id, "portData": JSON.stringify(tbl) },
于 2013-05-15T15:38:11.273 回答