【问题标题】:Passing JSON containing a tags in GET variable to php将包含 GET 变量中的标签的 JSON 传递给 php
【发布时间】: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="\&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 变量。我如何通过 POST 而不是 GET 传递 idJSON.stringify(tbl)

【问题讨论】:

  • 有了这么多数据,你真的应该使用 POST 而不是 GET。
  • 好吧,您显示的是错误地转义了 JSON。那是从哪里来的?你在 PHP 中究竟收到了什么?
  • 我展示的是从JSON.stringify 返回的内容。这将作为 get 变量原封不动地发送,但由于 html 编码的引号被视为在它们之前带有斜杠的引号,因此在 URL 形式中引号不会被转义,这显然会造成混乱

标签: php jquery json get


【解决方案1】:

使用encodeURIComponent 准备一个要插入到URI 中的字符串。


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

data: { "id": id, "portData": JSON.stringify(tbl) },

【讨论】:

  • 与任何其他查询字符串数据的方式相同。 $json_text = $_GET['portData']
  • 虽然你确实回答了我最初的问题,但你知道我可以如何使用 POST 而不是 GET 来传递我的数据,因为它似乎更合适,因为 json 可能会变得很长?
  • 是的,但我的 data 在目标 URL 的末尾作为 GET 字符串传递。需要换吗?
  • type: "post" 而不是 type: "get" 会改变这一点。
猜你喜欢
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
相关资源
最近更新 更多