JSON编码在Javascript中,解码在PHP中
JSON encode in Javascript and decode in PHP
我在Javascript中创建了一个对象,作为参数传递给PHP脚本。
var pattern = new Object();
pattern['@id'] = '';
pattern['@num'] = '';
pattern.cprop = new Object();
//pattern.aprop = new Object();
pattern['@id'] = id;
pattern['@num'] = pn;
pattern.cprop.$ = pb.find('input[name="subject"]').val() || '';
var json = {'pattern': pattern};
我的阿贾克斯电话是
url: clr_url_base+'storepat.php?data='+encodeURIComponent($.toJSON(json))
在我的PHP脚本中,我使用
$pat = json_decode(str_replace (''"','"', $data), true);
$prep = $pat["pattern"]["@id"];
$sense = $pat["pattern"]["@num"];
$cprop = $pat["pattern"]["cprop"]["$"];
//$aprop = $pat["pattern"]["aprop"]["$"];
这有效,但是当我添加 aprop 值时,它不再有效。所有值都是字符串。关于出了什么问题的任何建议。
下面是两个 JSON 字符串:
{'"pattern'":{'"@id'":'"against'",'"@num'":'"1(1)'",'"cprop'":{'"$'":'"a person or thing (often abstract) opposed'"}}}
{'"pattern'":{'"@id'":'"against'",'"@num'":'"1(1)'",'"cprop'":{'"$'":'"a person or thing (often abstract) opposed'"},'"aprop'":{'"$'":'"verbs (to which ''against'' introduces idea of opposition); nouns denoting conflict'"}}}
第一个只有 cprop 的值,而第二个添加了 aprop 的值。请注意,aprop 有单引号。正是这种数据似乎乞求在Javascript中编码并在PHP中解码。第二枚炸弹。我有一个表单中的大约 20 个字段,因此手动创建 JSON 而不是作为模式中的字段会变得非常复杂。当第二个炸弹时,$pat的值为 NULL。
我强烈建议通过jQuery发布数据,而不是传入查询字符串。 为什么? 因为这样您就不必担心URL编码等。
这在javascript/jQuery中可能看起来像这样。 显然,对于任何类型的 AJAX 发送机制,概念基本上是相同的。
$.ajax({
type: 'POST',
url: clr_url_base+'storepat.php?',
contentType: 'application/json',
dataType: 'json', // if you expect JSON in return
data: json, // your JSON string here
success: // your success handler
error: // your error handler
});
在 PHP 端,由于您不处理表单编码的数据,因此您需要读取 PHP 的原始输入。 幸运的是,这非常简单,将 POST 数据转换为 PHP 对象/数组是非常微不足道的。 就这么简单:
$json = file_get_contents('php://input');
$variable = json_decode($json);
您有很多问题,但首先是您启用了魔术报价。这就是为什么你有所有这些反斜杠。你粗暴地试图用str_replace
"修复"它是一个坏主意,因为除了"
之外,还有其他事情会被魔术行情所逃避。您应该在php.ini
文件中找到该设置,并将其禁用。"寄存器全局"也是如此,这是一个非常不安全的功能。改为引用$_GET['data']
。
有了这个,我建议的下一件事是使用POST而不是GET。这意味着您不必弄乱转义数据,因为这总是伴随着搞砸数据的风险。
您应该能够毫不费力地实施这些更改。
- 如何在JS中编码URL并在PHP中解码
- php中javascript解码中的base64编码
- 为什么我不必在 JS 中解码/解析 PHP 生成的 JSON 字符串
- PHP(PDO)url编码如何在javascript中解码?decodeURI?或解码URI组件
- PHP数组JSON编码和该对象在ExtJs中解码
- 将Json数据解码为PHP变量
- 使用Jquery从PHP页面解码JSON数据
- 解码用JavaScript调用的PHP
- PHP 字符串正在将空格更改为 + 符号.需要解码以保留空格
- 用 JavaScript 和 php 进行编码和解码
- JavaScript:解码 PHP json_encode响应
- JSON编码在Javascript中,解码在PHP中
- PHP base64 编码的响应在 Javascript 中无法正确解码
- 在javascript中通过php解码base64编码的字符串
- 如何正确解码 PHP 中编码的 URI 的 JavaScript
- 我的 JSON 没有被 PHP 解码
- 使用php和javascript进行编码和解码以及数据属性验证
- 用PHP从Javascript解码Json字符串
- 在php中解码cyrillicbase64
- 用javascript编码url,用PHP解码